У меня есть такой код:
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
8 ответов
Я решил изменить размер значка на 16x16 пикселей и использовать только белый цвет.
Посмотрите документацию: http://developer.android.com/design/style/iconography.html.
Есть слова: «Значки уведомлений должны быть полностью белыми. Также система может уменьшать и / или затемнять значки».
Как указано в разделе «Уведомления» об изменении поведения Android 5.0 на сайте разработчиков Android:
Уведомления отображаются с темным текстом поверх белого (или очень светлого) фона, чтобы соответствовать новым виджетам материального дизайна. Убедитесь, что все ваши уведомления выглядят правильно с новой цветовой схемой. Если ваши уведомления выглядят неправильно, исправьте их:
Используйте setColor (), чтобы установить цвет акцента в круге за изображением значка. Обновите или удалите ресурсы, содержащие цвет. Система игнорирует все неальфа-каналы в значках действий и в значке основного уведомления. Вы должны предполагать, что эти значки будут только альфа-версиями. Система рисует значки уведомлений белым цветом, а значки действий - темно-серым.
http://developer.android.com/about/versions/android-5.0 -changes.html.
Дубликат: значок панели уведомлений становится белым в Android 5 Lollipop
Вкратце:
Обновление Android 5: https://developer.android.com/about/versions/android- 5.0-changes.html Уведомления -> Стиль дизайна материалов
Обновите или удалите ресурсы, содержащие цвет. Система игнорирует все неальфа-каналы в значках действий и в значке основного уведомления. Вы должны предполагать, что эти значки будут только альфа-версиями. Система рисует значки уведомлений белым цветом, а значки действий - темно-серым.
Можно установить цвет фона маленького значка с помощью (по умолчанию серый):
Notification.Builder#setColor(int)
Добавьте это в свой манифест -
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />
Любой, кто все еще смотрит на это, самый простой способ заставить ваш значок правильно отображаться - сначала отрисовать его с помощью 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);
В Android 5.0 значок, отображаемый в строке состояния, представляет собой белый квадрат из-за 5.0 Lollipop «Значки уведомлений должны быть полностью белыми» .
Вы можете легко найти эти типы значков на значке материала. Посетите: https://material.io/icons/.
Google также предлагает использовать собственный цвет, который будет отображаться за белым значком уведомления с помощью метода setColor()
.
Для получения дополнительной информации посетите: https://developer.android.com/about /versions/android-5.0-changes.html
Удалите android:targetSdkVersion="21"
из manifest.xml
. это будет работать!
targetSdkVersion
был в manifest.xml в первую очередь? Эти вещи должны быть установлены в build.gradle.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.