55

У меня есть этот код:Почему набор значков с Notification.Builder.setSmallIcon в Android Lollipop показывают как белый квадрат?

Notification notif; 

// Build notification 
Notification.Builder notifBuilder = new Notification.Builder(context); 
notifBuilder.setContentIntent(pendingIntent); 
notifBuilder.setContentTitle(title); 
notifBuilder.setSmallIcon(icon_resId); 
notifBuilder.setContentText(ne.getCaption()); 
notifBuilder.setDefaults(Notification.DEFAULT_ALL); 
notifBuilder.setAutoCancel(autocancel); 
notifBuilder.setWhen(System.currentTimeMillis()); 
notif = notifBuilder.build(); 

и отлично работает в Android 4.4.

Однако в Android 5.0 значок, отображаемый в строке состояния, представляет собой белый квадрат. Значок, показанный в новом «корпусе уведомления», который появляется, когда устройство заблокировано, является правильным.

В http://developer.android.com/reference/android/app/Notification.Builder.html, я не вижу ничего нового о значках уведомлений в уровне API 21

+0

Здравствуйте, вы нашли решение? У меня такая же проблема. Я пробовал с другим значком, но такая же проблема все еще случается. – Seb83

+2

Я решил изменить размер значка на 16x16 пикселей и использовать только белый цвет – Borja

+1

Возможный дубликат [Значок панели уведомлений становится белым в Android 5 Lollipop] (http://stackoverflow.com/questions/28387602/notification-bar-icon- turn-white-in-android-5-lollipop) –

ответ

25

я решил изменять размер значков на 16х16 пикселей и используя только белый цвет

+3

Вы не заметили, что все уведомления замаскированы белым в леденец? Чтобы использовать хорошие значки в леденец, вы должны использовать значок с примечательной формой. Все цвета будут переведены на белый, чтобы прозрачность была обязательной. –

+0

Полный размер объекта изображения должен быть 72 * 72 в пределах оптического квадрата 66 * 66 для правильного отображения. Пожалуйста, обратитесь к http://petrnohejl.github.io/Android-Cheatsheet-For-Graphic-Designers/ – SavageKing

+0

@SavageKing это отличный ресурс, но не был обновлен для Lollipop. В частности, размеры значков уведомлений больше не масштабируются корректно по сравнению с приложениями Google. Насколько я могу судить, они используют значок 80x80 в изображении 96x96 для xxxhdpi. – String

29

Посмотрите на документации: http://developer.android.com/design/style/iconography.html

есть слова: «Значки уведомлений должны быть полностью белыми. Кроме того, система может уменьшать и/или затемнить значки».

+4

Документация изменилась: https://www.google.com/design/spec/patterns/notifications.html «Будьте непрозрачным белым, используя только альфа-канал». – Ben

+3

Ни одна ссылка by porlicus или Ben в настоящее время ничего не говорит о спецификациях маленьких значков. – JoeMjr2

-4

удалить андроид: targetSdkVersion = "21" из manifest.xml. он будет работать!

+72

Это не решение, это плохой способ борьбы с системой. – SagiLow

+0

есть ли какие-либо решения с android: targetSdkVersion = "21" версия в файле манифеста? – John

+2

@john, нет, но установка android: targetSdkVersion = "19" отлично работает. Для всех остальных: я не совсем понимаю неприязнь к этому ответу. Проблема в основном: «Lollipop не хочет делать то, что я хочу делать». Поэтому логически ваш выбор принимает леденец или не нацеливает леденец. – netsplit

3

Как отмечено в Android 5.0 Поведенческих Изменения на сайте Android Developers под Notifications:

Уведомлений рисуются с темным текстом на вершине белого (или очень светлый) фоны, чтобы соответствовать новому дизайну материала виджетов. Убедитесь, что все ваши уведомления выглядят правильно с новой цветовой схемой. Если ваши уведомления выглядят неправильно, исправьте их:

Используйте setColor(), чтобы установить цвет акцента в круге за вашим изображением значка. Обновление или удаление активов, которые включают цвет. Система игнорирует все не-альфа-каналы в значках действий и в главном значке уведомления. Вы должны предположить, что эти значки будут только альфа-. Система рисует значки уведомлений в белом цвете и значки действий в темно-сером цвете.

http://developer.android.com/about/versions/android-5.0-changes.html.

4

Дубликат: Notification bar icon turns white in Android 5 Lollipop

В Brief:

Android 5 обновление: https://developer.android.com/about/versions/android-5.0-changes.html Уведомления -> Материал конструкции типа

Update или удалить активы, которые включают цвет. Система игнорирует все ненулевые каналы в значках действий и в главном значке уведомления. Вы должны предположить, что эти значки будут только альфа-. Система рисует значки уведомлений в белом и значки действий в темно-сером цвете.

Можно установить небольшой цвет фона значок, используя (по умолчанию серый):