Ändern des Hintergrunds des Benachrichtigungssymbols auf Lollipop


79

Ich habe das Entwurfsmuster für Benachrichtigungen durchgesehen und nichts gefunden, das über den Hintergrund des Benachrichtigungssymbols spricht. Wie Sie wahrscheinlich bemerkt haben, gibt es nur einen hellgrauen Hintergrund für benutzerdefinierte Benachrichtigungen. Apps wie Hangouts oder einfach die USB-Debugging-Benachrichtigung haben jedoch 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)

Siehe Bild


Vielleicht haben sie ein spezielles Symbol mit grünem Hintergrund?
Ahmed Hegazy

Ich bin mir nicht sicher, ob es für irgendjemanden noch wichtig ist, aber seit Android 6.1 gibt es ein neues Flag "NotificationCompat.Builder.setColorized (boolean colorize)", mit dem der "graue Hintergrund" einer Benachrichtigung geändert werden kann.
Tobias Reich

Antworten:


156

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 berücksichtigt und wirkt sich nur auf den Hintergrund des kleinen Symbols aus . Wenn ein großes Symbol angezeigt wird, liegt der Inhalt vollständig in Ihrer Verantwortung.

Quelle: NotificationCompat.Builder # setColor (int)


11
Entsprechend: stackoverflow.com/a/27023679/327011 ändert setColor nur die Farbe des kleinen Symbols. In acht nehmen.
Neteinstein

5
1) Dies funktioniert nur auf LOLLIPOP. 2) Das von Ihnen in bereitgestellte Bild bleibt davon unberührt setLargeBitmap. Es färbt nur den Hintergrund des kleinen Symbols.
Eugen Pechanec

@AlexVPerl Sie können meine Lösung direkt unter diesem Kommentar versuchen
Satyapol

1
"setColor" ist die richtige Antwort, wenn Sie kein großes Symbol festlegen. Das kleine Symbol wird mit my_notif_color als Hintergrund angezeigt, ohne dass ein kleines Abzeichen hinzugefügt wird. getestet auf Android 6.0
Loda

Ich habe ein Problem Ich habe festgelegt, dass das Symbol eine grüne Farbe hat, aber wenn eine Benachrichtigung angezeigt wird, ändert es sich automatisch in Weiß.
HUSNAIN SARWAR

10

Wenn Sie Farbe in colours.xml definiert haben, fügen Sie in Ihrem NotificationBuilder den Wert as hinzu

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

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


Ich habe ein Problem Ich habe festgelegt, dass das Symbol eine grüne Farbe hat, aber wenn eine Benachrichtigung angezeigt wird, ändert es sich automatisch in Weiß.
HUSNAIN SARWAR

3

getColor(int) wurde am veraltet Resources

Wir sollten jetzt eine dieser Alternativen verwenden:


Ich habe ein Problem, ich habe das Symbol auf grüne Farbe gesetzt, aber wenn eine Benachrichtigung
angezeigt wird,

Wenn Sie eine Volltonfarbe verwenden, funktioniert die alte Methode einwandfrei.
Eugen Pechanec

noch weißes Quadrat Symbol nur in 6.0 aber vor 5.0 Appicon fein
Harsha
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.