Zmiana tła ikony powiadomień w Lollipop


79

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)

Widzieć zdjęcie


może mają specjalną ikonę z zielonym tłem?
— Ahmed Hegazy

Nie jestem pewien, czy jest to nadal ważne dla kogokolwiek, ale od Androida 6.1 pojawiła się nowa flaga „NotificationCompat.Builder.setColorized (boolean colorize)”, która umożliwia zmianę „szarego tła” powiadomienia.
— Tobias Reich

Odpowiedzi:


158

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)


11
Zgodnie z tym: stackoverflow.com/a/27023679/327011 setColor zmieni tylko kolor małej ikony. Strzec się.
— neteinstein

5
1) Działa tylko na LOLLIPOP. 2) Nie ma to wpływu na obraz dostarczony przez Ciebie w setLargeBitmap. To tylko kolory tła małej ikony.
— Eugen Pechanec

@AlexVPerl możesz wypróbować moje rozwiązanie tuż pod tym komentarzem
— satyapol

1
„setColor” to poprawna odpowiedź, JEŚLI NIE USTAWISZ DUŻEJ IKONY. Będziesz mieć duży wyświetlacz małej ikony z my_notif_color jako tłem, bez dodanej małej plakietki. testowane na Androidzie 6.0
— Loda

Mam problem. Ustawiłem ikonę na zieloną, ale po pojawieniu się powiadomienia zmienia się automatycznie na białą.
— HUSNAIN SARWAR

10

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.


Mam problem. Ustawiłem ikonę na zieloną, ale po pojawieniu się powiadomienia zmienia się automatycznie na białą.
— HUSNAIN SARWAR

3

getColor(int) został wycofany w dniu Resources

Powinniśmy teraz użyć jednej z tych alternatyw:


Mam problem, ustawiłem ikonę na zieloną, ale po pojawieniu się powiadomienia zmienia się automatycznie na białą ..
— HUSNAIN SARWAR

Jeśli używasz jednolitego koloru, stara metoda działa dobrze.
— Eugen Pechanec,

wciąż biała kwadratowa ikona pojawi się już w wersji 6.0, ale przed 5.0 appicon dobrze
— Harsha
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.