web-dev-qa-db-fra.com

Modification du fond de l'icône de notification sur Lollipop

Je parcourais le modèle de conception des notifications , et je n'ai rien trouvé qui parle du fond de l'icône de notification. Comme vous l'avez probablement remarqué, il n'y a qu'un fond gris clair pour les notifications personnalisées. Mais les applications comme Hangouts, ou simplement la notification de débogage USB, ont une couleur personnalisée pour l'arrière-plan de leur icône de notification.

Est-il possible de changer ce gris en quelque chose d'autre? (la couleur de ce cercle spécifique par programme)

See picture

77
Zsolt Boldizsár

1) Obtenir la couleur

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

2) Définir la couleur à la notification

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

La couleur n'est respectée que sur Lollipop et n'affecte que l'arrière-plan de la petite icône . Si une grande icône est affichée, son contenu relève de votre entière responsabilité.

Source: NotificationCompat.Builder # setColor (int)

153
Eugen Pechanec

si vous avez défini color dans colors.xml, dans votre NotificationBuilder, ajoutez de la valeur

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

Ceci devrait régler votre problème. Cela n'affecte que l'arrière-plan de l'icône.

9
satyapol

getColor(int) est déconseillé sur Resources

Nous devrions maintenant utiliser l'une de ces alternatives:

2
Luís Ramalho