我有这段代码:
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中,状态栏中显示的图标是白色方块。 <> p>,当设备被锁定时出现的新“通知体”中显示的图标是正确的。
在http://developer.android.com/reference/android/app/Notification.Builder.html中,我没有看到有关API级别21中的通知图标的任何新内容
答案 0 :(得分:30)
查看文档: http://developer.android.com/design/style/iconography.html
有词:“通知图标必须完全是白色。此外,系统可能会缩小和/或使图标变暗。”
答案 1 :(得分:29)
我已解决将图标大小更改为16x16像素并仅使用白色
答案 2 :(得分:4)
正如通知中的Android开发者网站的Android 5.0行为更改中所述:
在白色(或非常浅)背景上使用深色文本绘制通知,以匹配新材质设计小部件。使用新的配色方案确保所有通知都正确。如果您的通知看起来不对,请修复它们:
使用setColor()在图标图像后面的圆圈中设置强调色。 更新或删除涉及颜色的资产。系统会忽略操作图标和主通知图标中的所有非Alpha通道。您应该假设这些图标仅为alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。
http://developer.android.com/about/versions/android-5.0-changes.html
答案 3 :(得分:4)
重复:Notification bar icon turns white in Android 5 Lollipop
简介:
Android 5更新 https://developer.android.com/about/versions/android-5.0-changes.html 通知 - &gt;材料设计风格
更新或删除涉及颜色的资产。系统忽略所有 动作图标和主要通知图标中的非Alpha通道。 您应该假设这些图标仅为alpha。系统 在深灰色的白色和动作图标中绘制通知图标。
可以使用(默认为灰色)设置小图标背景颜色:
ormlite
答案 4 :(得分:1)
将此添加到您的清单中-
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />
答案 5 :(得分:0)
在Android 5.0中,状态栏中显示的图标是白色方块,因为5.0 Lollipop &#34;通知图标必须完全为白色&#34; 。
您可以在“材质”图标上轻松找到此类图标。 访问:https://material.io/icons/
Google还建议我们使用自定义颜色,该颜色将使用setColor()
方法显示在白色通知图标后面。
有关详细信息,请访问:https://developer.android.com/about/versions/android-5.0-changes.html
答案 6 :(得分:0)
仍然有人在看这个,让图标正确显示的最简单方法是首先在此处使用Android Icon Studio进行渲染:
https://romannurik.github.io/AndroidAssetStudio/icons-notification.html
将下载的zip文件中的文件解压缩到您的项目/ main文件夹中,以便将它们放入相关的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);
答案 7 :(得分:-4)
从android:targetSdkVersion="21"
移除manifest.xml
。
它会起作用!