ocultar - Color de los iconos de la barra de estado de Android
ocultar iconos de la barra de estado android (6)
Me preguntaba si es posible cambiar el color de los
iconos de
la barra de estado (
no
el color de la barra de estado,
colorPrimaryDark
)
Digamos que quiero esta barra de estado con:
<item name="colorPrimaryDark">@android:color/white</item>
y los íconos en negro, ¿es posible?
Gracias.
EDITAR:
Nuevo en la vista previa del desarrollador M: windowLightStatusBar. Activar esto en su tema le dice al sistema que use un primer plano oscuro, útil para barras de estado de colores más claros. Tenga en cuenta que la vista previa M parece tener un error en el que los iconos de notificación permanecen en blanco, mientras que los iconos de estado del sistema cambian correctamente a negro semitransparente.
de: Roman Nurik post Google+
@eOnOe ha respondido cómo podemos cambiar el tono de la barra de estado a través de xml. Pero también podemos cambiarlo dinámicamente en el código:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = getWindow().getDecorView();
if (shouldChangeStatusBarTintToDark) {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
// We want to change tint color to white again.
// You can also record the flags in advance so that you can turn UI back completely if
// you have set other flags before, such as translucent or full screen.
decor.setSystemUiVisibility(0);
}
}
Establecer
windowLightStatusBar
en
true
no funciona con teléfonos Mi, algunos teléfonos Meizu, teléfonos Blackview, WileyFox, etc. He encontrado
un truco
para dispositivos Mi y Meizu.
Esta no es una solución integral de este problema de rendimiento, pero tal vez sería útil para alguien.
Y creo que sería mejor decirle a su cliente que la barra de estado para colorear (por ejemplo) blanco, no es una buena idea.
en lugar de usar diferentes hacks, sería mejor definir el
colorPrimaryDark
apropiadoPrimaryDark de acuerdo con las pautas
No desde Lollipop. A partir de Android 5.0, las pautas dicen:
Los íconos de notificación deben ser completamente blancos.
Incluso si no lo son, el sistema solo considerará el canal alfa de su icono, haciéndolos blancos
Solución alternativa
La única forma de tener un ícono de color en Lollipop es reducir su
targetSdkVersion
a valores
<21
, pero creo que sería mejor seguir las pautas y usar solo íconos blancos.
Sin embargo, si todavía decide que desea iconos de colores, puede usar el método DrawableCompat.setTint de la nueva biblioteca de soporte v4.
Sí, puedes cambiarlo. pero en la api 22 y superior, usando NotificationCompat.Builder y setColorized (true):
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, context.getPackageName())
.setContentTitle(title)
.setContentText(message)
.setSmallIcon(icon, level)
.setLargeIcon(largeIcon)
.setContentIntent(intent)
.setColorized(true)
.setDefaults(0)
.setCategory(Notification.CATEGORY_SERVICE)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_HIGH);
si tiene un nivel de API inferior a 23, debe usarlo de esta manera. funcionó para mí declarar esto bajo v21 / style .
<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>