Przeglądałem wzorzec projektowy Powiadomienia i nie znalazłem niczego, co mówi o tle ikony powiadomienia. Jak zapewne zauważyłeś, dla niestandardowych powiadomień jest tylko jasnoszare tło. Ale aplikacje takie jak Hangouts lub po prostu powiadomienie o debugowaniu USB mają niestandardowy kolor tła ikony powiadomienia.
Czy istnieje możliwość zmiany tej szarości na coś innego? (programowo kolor tego konkretnego koła)
android
android-notifications
android-5.0-lollipop
Zsolt Boldizsár
źródło
źródło
Odpowiedzi:
1) Uzyskaj kolor
int color = 0xff123456; int color = getResources().getColor(R.color.my_notif_color); int color = ContextCompat.getColor(context, R.color.my_notif_color);
2) Ustaw kolor powiadomienia
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); ... builder.setColor(color); Notification notif = builder.build();
Kolor jest respektowany tylko w Lollipop i wpływa tylko na tło małej ikony . Jeśli wyświetlana jest duża ikona, za jej zawartość odpowiadasz wyłącznie.
Źródło: NotificationCompat.Builder # setColor (int)
źródło
LOLLIPOP
. 2) Nie ma to wpływu na obraz dostarczony przez Ciebie wsetLargeBitmap
. To tylko kolory tła małej ikony.jeśli zdefiniowałeś kolor w colors.xml, następnie w NotificationBuilder dodaj wartość jako
.setColor(getResources().getColor(R.color.<YOUR_COLOR>))
To powinno rozwiązać twój problem. Ma to wpływ tylko na tło ikony.
źródło
getColor(int)
został wycofany w dniuResources
Powinniśmy teraz użyć jednej z tych alternatyw:
Resources
jest getColor (int, Theme)ContextCompat
's getColor (kontekst kontekstowy, identyfikator int)źródło