web-dev-qa-db-de.com

Ändern des Benachrichtigungssymbolhintergrunds auf Lollipop

Ich habe das Notifications design pattern durchgesehen und nichts gefunden, was über den Hintergrund der Benachrichtigungssymbole spricht. Wie Sie wahrscheinlich bemerkt haben, gibt es für benutzerdefinierte Benachrichtigungen nur einen hellgrauen Hintergrund. Apps wie Hangouts oder einfach die USB-Debugging-Benachrichtigung haben eine benutzerdefinierte Farbe für den Hintergrund des Benachrichtigungssymbols.

Gibt es eine Möglichkeit, dieses Grau in etwas anderes zu verwandeln? (die Farbe dieses bestimmten Kreises programmgesteuert)

See picture

77

1) Farbe erhalten

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

2) Stellen Sie die Farbe auf Benachrichtigung ein

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

Die Farbe wird nur bei Lollipop beachtet und wirkt sich nur auf den Hintergrund des kleinen Symbols aus. Wenn ein großes Symbol angezeigt wird, liegt der Inhalt ausschließlich in Ihrer Verantwortung.

Quelle: NotificationCompat.Builder # setColor (int)

153
Eugen Pechanec

wenn Sie color in colors.xml definiert haben, geben Sie in Ihrem NotificationBuilder den Wert "" ein

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

Das sollte dein Problem lösen. Dies wirkt sich nur auf den Hintergrund des Symbols aus.

9
satyapol

getColor(int) wurde auf Resources verworfen

Wir sollten jetzt eine dieser Alternativen verwenden:

2
Luís Ramalho