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

Zsolt Boldizsár
fuente
¿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)

Eugen Pechanec
fuente
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.

satyapol
fuente
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:

Luís Ramalho
fuente
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