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.