我有这个代码:
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中的通知图标的任何新内容
查看文档:http://developer.android.com/design/style/iconography.html
有句话:“通知图标必须完全是白色的。此外,系统可能会缩小和/或使图标变暗。”
我已经解决了将图标大小更改为16x16像素并仅使用白色的问题
如通知中Android Android开发者网站的Android 5.0行为更改中所述:
在白色(或非常浅)背景上使用深色文本绘制通知以匹配新材料设计小部件。使用新的配色方案确保所有通知都正确。如果您的通知看起来不对,请修复它们:
使用setColor()在图标图像后面的圆圈中设置强调色。更新或删除涉及颜色的资产。系统会忽略操作图标和主通知图标中的所有非Alpha通道。您应该假设这些图标仅为alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。
http://developer.android.com/about/versions/android-5.0-changes.html。
重复:Notification bar icon turns white in Android 5 Lollipop
简要说明:
Android 5更新:https://developer.android.com/about/versions/android-5.0-changes.html通知 - >材料设计风格
更新或删除涉及颜色的资产。系统会忽略操作图标和主通知图标中的所有非Alpha通道。您应该假设这些图标仅为alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。
可以使用(默认为灰色)设置小图标背景颜色:
Notification.Builder#setColor(int)
在你的清单中添加它 -
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />
在Android 5.0中,状态栏中显示的图标是白色方块,因为5.0 Lollipop“通知图标必须完全是白色”。
您可以在“材质”图标上轻松找到此类图标。访问:https://material.io/icons/
谷歌还建议我们使用自定义颜色,使用setColor()
方法显示在白色通知图标后面。
欲了解更多信息,请访问:https://developer.android.com/about/versions/android-5.0-changes.html
任何人都在看这个,让图标正确显示的最简单方法是首先使用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:targetSdkVersion="21"
删除manifest.xml
。它会工作!