Ä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

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

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

Satyapol
quelle
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:

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