Зміна фону піктограми сповіщення на льодянику


79

Я переглядав шаблон дизайну сповіщень і не знайшов нічого, що говорить про фон піктограми сповіщень. Як ви, напевно, помітили, для користувальницьких сповіщень існує лише світло-сірий фон. Але такі програми, як Hangouts або просто сповіщення про налагодження через USB, мають власний колір для фону піктограми сповіщень.

Чи є можливість змінити цей сірий колір на щось інше? (колір цього конкретного кола програмно)

Дивіться малюнок


може вони мають спеціальну піктограму із зеленим фоном?
Ахмед Хегазі

Не впевнений, що це все ще важливо для когось, але з Android 6.1 з'явився новий прапор "NotificationCompat.Builder.setColorized (логічне забарвлення)", що дозволяє змінювати "сірий фон" сповіщення.
Тобіас Рейх

Відповіді:


158

1) Отримати колір

int color = 0xff123456;
int color = getResources().getColor(R.color.my_notif_color);
int color = ContextCompat.getColor(context, R.color.my_notif_color);

2) Встановіть Колір на Сповіщення

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setColor(color);
Notification notif = builder.build();

Колір поважається лише на льодянику та впливає лише на фон маленької піктограми . Якщо відображається велика піктограма, її вміст - це повністю ваша відповідальність.

Джерело: NotificationCompat.Builder # setColor (int)


11
У відповідності з цим: stackoverflow.com/a/27023679/327011 SetColor зміниться тільки кольором маленького значка. Обережно.
neteinstein

5
1) Це працює лише на LOLLIPOP. 2) Це не впливає на зображення, надане вами в setLargeBitmap. Це лише кольори тла маленької піктограми.
Євген Печанець

@AlexVPerl ти можеш спробувати моє рішення трохи нижче цього коментаря
satyapol

1
"setColor" - це правильна відповідь, ЯКЩО ВИ НЕ ВСТАНОВИТИ ВЕЛИКУ ІКОНУ. У вас буде маленький значок із великим значком із фоном my_notif_color, без додавання маленького значка протестовано на android 6.0
Loda

У мене проблема, я встановив, що піктограма має зелений колір, але коли з’являється сповіщення, вона автоматично змінюється на білу.
HUSNAIN SARWAR

10

якщо ви визначили колір у colors.xml, тоді у вашому NotificationBuilder додайте значення як

.setColor(getResources().getColor(R.color.<YOUR_COLOR>))

Це має вирішити вашу проблему. Це впливає лише на фон піктограми.


У мене проблема, я встановив, що піктограма має зелений колір, але коли з’являється сповіщення, вона автоматично змінюється на білу.
HUSNAIN SARWAR

3

getColor(int) було припинено Resources

Тепер ми повинні використовувати одну з таких альтернатив:


У мене проблема, я встановив, що піктограма має зелений колір, але коли з'являється сповіщення, вона автоматично змінюється на білу ..
HUSNAIN SARWAR

Якщо ви використовуєте однотонні кольори, старий метод працює чудово.
Євген Печанець

ще біла квадратна піктограма, що надходить лише в 6.0, але до 5.0 appicon штраф
Харша,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.