У меня есть такой код:

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

63
Borja 28 Ноя 2014 в 15:28

8 ответов

Лучший ответ

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

30
Borja 1 Дек 2014 в 11:54

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

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

32
porlicus 4 Дек 2014 в 06:07

Как указано в разделе «Уведомления» об изменении поведения Android 5.0 на сайте разработчиков Android:

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

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

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

4
bummi 19 Фев 2015 в 20:23

Дубликат: значок панели уведомлений становится белым в Android 5 Lollipop

Вкратце:

Обновление Android 5: https://developer.android.com/about/versions/android- 5.0-changes.html Уведомления -> Стиль дизайна материалов

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

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

Notification.Builder#setColor(int)
4
Community 23 Май 2017 в 12:10

Добавьте это в свой манифест -

 <meta-data android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification" />
3
Anirban 18 Авг 2018 в 10:00

Любой, кто все еще смотрит на это, самый простой способ заставить ваш значок правильно отображаться - сначала отрисовать его с помощью Android Icon Studio здесь:

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Разархивируйте файлы из загруженного zip-архива в свой проект / основную папку, чтобы они поместились в соответствующие папки drawable-xxxx.

Затем, чтобы изменить цвет в уведомлении, используйте что-то вроде этого:

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification_appicon) // <-- Icon from Android Icon Studio 
    .setColor(context.getColor(R.color.holo_blue))    // <-- Set your preferred icon colour to appear in the notification dropdown list
    .setContentTitle("Title")
    .setContentText("Content")
    .setAutoCancel(true)
    .setCategory(NotificationCompat.CATEGORY_EVENT)
    .setDefaults(Notification.DEFAULT_ALL)
    .setPriority(NotificationCompat.PRIORITY_DEFAULT);
2
James Semaj 25 Апр 2019 в 03:46

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

-3
CopsOnRoad 25 Фев 2019 в 18:41

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

Вы можете легко найти эти типы значков на значке материала. Посетите: https://material.io/icons/.

Google также предлагает использовать собственный цвет, который будет отображаться за белым значком уведомления с помощью метода setColor().

Для получения дополнительной информации посетите: https://developer.android.com/about /versions/android-5.0-changes.html

0
Aashish 22 Мар 2018 в 15:47