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)
android
android-notifications
android-5.0-lollipop
Zsolt Boldizsár
quelle
quelle
Antworten:
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)
quelle
LOLLIPOP
. 2) Das von Ihnen in bereitgestellte Bild bleibt davon unberührtsetLargeBitmap
. Es färbt nur den Hintergrund des kleinen Symbols.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.
quelle
getColor(int)
wurde am veraltetResources
Wir sollten jetzt eine dieser Alternativen verwenden:
Resources
‚s getColor (int, Theme)ContextCompat
‚s getColor (Context Kontext, int id)quelle