Cambiar el fondo del icono de notificación en Lollipop


79

Estaba revisando el patrón de diseño de notificaciones y no encontré nada que hable sobre el fondo del icono de notificación. Como probablemente haya notado, solo hay un fondo gris claro para notificaciones personalizadas. Pero aplicaciones como Hangouts o simplemente la notificación de depuración USB tienen un color personalizado para el fondo del icono de notificación.

¿Existe alguna posibilidad de convertir ese gris en otra cosa? (el color de ese círculo específico mediante programación)

Ver imagen


¿Pueden tener un icono especial con fondo verde?
Ahmed Hegazy

No estoy seguro si todavía es importante para alguien, pero desde Android 6.1 hay una nueva bandera "NotificationCompat.Builder.setColorized (boolean colorize)" que permite cambiar el "fondo gris" de una notificación.
Tobias Reich

Respuestas:


158

1) Obtener color

int color = 0xff123456;
int color = getResources().getColor(R.color.my_notif_color);
int color = ContextCompat.getColor(context, R.color.my_notif_color);

2) Establezca el color de la notificación

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setColor(color);
Notification notif = builder.build();

El color se respeta solo en Lollipop y solo afecta el fondo del icono pequeño . Si se muestra un icono grande, su contenido es responsabilidad exclusiva de usted.

Fuente: NotificationCompat.Builder # setColor (int)


11
De acuerdo con esto: stackoverflow.com/a/27023679/327011 el setColor solo cambiará el color del icono pequeño. Tener cuidado.
neteinstein

5
1) Esto solo funciona en LOLLIPOP. 2) Esto no afecta la imagen proporcionada por usted en setLargeBitmap. Solo colorea el fondo del icono pequeño.
Eugen Pechanec

@AlexVPerl puede probar mi solución justo debajo de este comentario
satyapol

1
"setColor" es la respuesta correcta SI NO ESTABLECE UN ICONO GRANDE. Tendrá el icono pequeño que se mostrará grande con my_notif_color como fondo, sin una pequeña insignia agregada. probado en Android 6.0
Loda

Tengo un problema, configuré que el ícono sea de color verde, pero cuando aparece una notificación, cambia a blanco automáticamente.
HUSNAIN SARWAR

10

si ha definido el color en colors.xml, en su NotificationBuilder agregue valor como

.setColor(getResources().getColor(R.color.<YOUR_COLOR>))

Eso debería resolver tu problema. Solo afecta al fondo del icono.


Tengo un problema, configuré que el ícono sea de color verde, pero cuando aparece una notificación, cambia a blanco automáticamente.
HUSNAIN SARWAR

3

getColor(int) ha sido obsoleto en Resources

Ahora deberíamos usar una de estas alternativas:


Tengo un problema me puse el icono tiene el color verde, pero cuando aparece la notificación cambia automáticamente a blanco ..
husnain SARWAR

Si está usando un color sólido, el método anterior funciona bien.
Eugen Pechanec

siendo blanco icono cuadrado onlycoming en 6.0 pero antes bien 5.0 AppIcon
Harsa
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.