Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo cambiar el color de la barra de estado en android

En primer lugar no es un duplicado como en Cómo cambiar el color de fondo de la barra de estado de Android

¿Cómo puedo cambiar el color de la barra de estado que debe ser igual que en la barra de navegación.

Quiero que el color de la barra de estado sea igual que el color de la barra de navegación

Introduzca aquí la descripción de la imagen

  • Android: ¿Notification.DEFAULT_VIBRATE requiere permiso de vibración?
  • ¿Existe una manera sencilla de detener un servicio en respuesta a que un usuario haga clic en una notificación?
  • Añadir acción de botón en la notificación personalizada
  • TaskStack personalizado termina la actividad principal de la notificación
  • Notificaciones de Firebase (FCM) no aparecen cuando se ha eliminado la aplicación de Android de la bandeja reciente
  • Desactivar el uso de Android hasta que se confirme la acción intencionada
  • Cómo solucionar este error: "android.app.RemoteServiceException: Mala notificación enviada desde el paquete"
  • Botones grises al agregar acciones a notificaciones en Jelly Bean
  • 9 Solutions collect form web for “Cómo cambiar el color de la barra de estado en android”

    Android 5.0 Lollipop presentó el tema de diseño de material que automáticamente colorea la barra de estado basada en el valor ColorPrimaryDark del tema.

    Esto es compatible con el dispositivo pre-lollipop gracias a la biblioteca support-v7-appcompat a partir de la versión 21. Blogpost sobre soporte appcompat v21 de Chris Banes

    Introduzca aquí la descripción de la imagen

    Lea más sobre el tema material en el sitio oficial de desarrolladores de Android

    Actualizar:

    Chupete:

     public abstract void setStatusBarColor (int color) 

    Añadido en API nivel 21

    Android Lollipop trajo consigo la posibilidad de cambiar el color de la barra de estado en tu aplicación para obtener una experiencia de usuario más envolvente y en sintonía con las Material Design Guidelines de Google.

    Aquí es cómo puede cambiar el color de la barra de estado utilizando el nuevo método window.setStatusBarColor introducido en el API level 21 .

    Cambiar el color de la barra de estado también requiere establecer dos banderas adicionales en la ventana; FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS agregar el indicador FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS y borrar el indicador FLAG_TRANSLUCENT_STATUS .

    Código de trabajo:

     Window window = activity.getWindow(); // clear FLAG_TRANSLUCENT_STATUS flag: window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // finally change the color window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color)); 

    Offcial: http://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int)

    Ejemplo: material-diseño-en todas partes

    https://chris.banes.me/2014/10/17/appcompat-v21/

    Introduzca aquí la descripción de la imagen

    El nombre de transición para el fondo de vista será " android:status:background ".

    Coloque esto es sus valores-v21 / styles.xml, para habilitarlo en Lollipop:

     <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/color_primary</item> <item name="colorPrimaryDark">@color/color_secondary</item> <item name="colorAccent">@color/color_accent</item> <item name="android:statusBarColor">@color/color_primary</item> </style> </resources> 

    Esto es una forma muy fácil de hacer esto sin ninguna biblioteca: si la versión del sistema operativo no es compatible – en kitkat – por lo que nada sucedió. Hago estos pasos:

    1. En mi xml i añadido a la parte superior de este Ver:
     <View android:id="@+id/statusBarBackground" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

    Entonces hice este método:

      public void setStatusBarColor(View statusBar,int color){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //status bar height int actionBarHeight = getActionBarHeight(); int statusBarHeight = getStatusBarHeight(); //action bar height statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight; statusBar.setBackgroundColor(color); } } 

    También usted necesita esos ambos métodos para conseguir la barra de la acción y la altura de la barra de estado:

     public int getActionBarHeight() { int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); } return actionBarHeight; } public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; } 

    Entonces lo único que necesita es esta línea para establecer el color de la barra de estado:

     setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white)); 

    Bueno, la solución Izhar estaba bien, pero, personalmente, estoy tratando de evitar el código que se ve así:

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //Do what you need for this SDK }; 

    Además, tampoco me gusta duplicar el código. En su respuesta tengo que añadir tal línea de código en todas las Actividades:

     setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white)); 

    Así que tomé la solución de Izhar y usé XML para obtener el mismo resultado: Crear un diseño para StatusBar status_bar.xml

     <View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="@dimen/statusBarHeight" android:background="@color/primaryColorDark" android:elevation="@dimen/statusBarElevation"> 

    Observe los atributos de altura y elevación, estos se establecerán en valores, valores-v19, valores-v21 más abajo.

    Añada este diseño a su distribución de actividades mediante include, main_activity.xml:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/Black" > <include layout="@layout/status_bar"/> <include android:id="@+id/app_bar" layout="@layout/app_bar"/> //The rest of your layout </RelativeLayout> 

    Para la barra de herramientas, agregue el atributo de margen superior:

     <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:background="@color/primaryColor" app:theme="@style/MyCustomToolBarTheme" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" android:elevation="@dimen/toolbarElevation" android:layout_marginTop="@dimen/appBarTopMargin" android:textDirection="ltr" android:layoutDirection="ltr"> 

    En tu appTheme style-v19.xml y styles-v21.xml, agrega la ventanaTranslucent attr:

    Styles-v19.xml, v21:

     <resources> <item name="android:windowTranslucentStatus">true</item> </resources> 

    Y finalmente, en su dimens, dimens-v19, dimens-v21, agregue los valores de la barra de herramientas topMargin y la altura de la statBarHeight: dimens.xml por menos de KitKat:

     <resources> <dimen name="toolbarElevation">4dp</dimen> <dimen name="appBarTopMargin">0dp</dimen> <dimen name="statusBarHeight">0dp</dimen> </resources> 

    La altura de la barra de estado es siempre 24dp dimens-v19.xml para KitKat y superior:

     <resources> <dimen name="statusBarHeight">24dp</dimen> <dimen name="appBarTopMargin">24dp</dimen> </resources> 

    Dimens-v21.xml para Lolipop, simplemente añada la elevación si es necesario:

     <resources> <dimen name="statusBarElevation">4dp</dimen> </resources> 

    Este es el resultado de Jellybean KitKat y Lollipop:

    Introduzca aquí la descripción de la imagen

    Esto es lo que funcionó para mí en KitKat y con buenos resultados.

     public static void setTaskBarColored(Activity context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = context.getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //status bar height int statusBarHeight = Utilities.getStatusBarHeight(context); View view = new View(context); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); view.getLayoutParams().height = statusBarHeight; ((ViewGroup) w.getDecorView()).addView(view); view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar)); } } 

    Una solución más:

     final View decorView = w.getDecorView(); View view = new View(BaseControllerActivity.this); final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get()); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight)); view.setBackgroundColor(colorValue); ((ViewGroup)decorView).addView(view); 

    Basta con crear un nuevo tema en res / values ​​/ styles.xml donde cambie el "colorPrimaryDark" que es el color de la barra de estado:

     <style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimaryDark">@color/colorGray</item> </style> 

    Y modifique el tema de la actividad en AndroidManifest.xml al que desee, en la siguiente actividad puede cambiar el color de nuevo al original seleccionando el tema original:

     <activity android:name=".LoginActivity" android:theme="@style/AppTheme.GrayStatusBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    Así es como debe resecar su res / values ​​/ colors.xml :

     <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#c6d6f0</color> <color name="colorGray">#757575</color> </resources> 

    Si quieres trabajar con Android 4.4 o superior, prueba esto. Me refiero a la respuesta de Harpreet y este enlace. Android y la barra de estado transparente

    En primer lugar, llamar al método setStatusBarColored en el método onCreate de la actividad (lo pongo en una clase util). Utilizo una imagen aquí, usted puede cambiarla para utilizar un color.

     public static void setStatusBarColored(Activity context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = context.getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); int statusBarHeight = getStatusBarHeight(context); View view = new View(context); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); view.getLayoutParams().height = statusBarHeight; ((ViewGroup) w.getDecorView()).addView(view); view.setBackground(context.getResources().getDrawable(R.drawable.navibg)); } } public static int getStatusBarHeight(Activity context) { int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } 

    Antes de: antes de

    Después: después

    El color de la barra de estado se ha cambiado, pero la barra de navegación está cortada, por lo que necesitamos establecer el margen o el desplazamiento de la barra de navegación en el método onCreate.

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height))); layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0); this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams); } 

    A continuación, la barra de estado se verá así.

    barra de estado

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.