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


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.