为什么在Android Lollipop中使用Notification.Builder.setSmallIcon设置的图标显示为白色方块?

问题描述 投票:59回答:8

我有这个代码:

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中的通知图标的任何新内容

android notifications android-5.0-lollipop android-notification-bar
8个回答
31
投票

查看文档:http://developer.android.com/design/style/iconography.html

有句话:“通知图标必须完全是白色的。此外,系统可能会缩小和/或使图标变暗。”


29
投票

我已经解决了将图标大小更改为16x16像素并仅使用白色的问题


4
投票

如通知中Android Android开发者网站的Android 5.0行为更改中所述:

在白色(或非常浅)背景上使用深色文本绘制通知以匹配新材料设计小部件。使用新的配色方案确保所有通知都正确。如果您的通知看起来不对,请修复它们:

使用setColor()在图标图像后面的圆圈中设置强调色。更新或删除涉及颜色的资产。系统会忽略操作图标和主通知图标中的所有非Alpha通道。您应该假设这些图标仅为alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。

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


4
投票

重复: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)

2
投票

在你的清单中添加它 -

 <meta-data android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification" />

0
投票

在Android 5.0中,状态栏中显示的图标是白色方块,因为5.0 Lollipop“通知图标必须完全是白色”。

您可以在“材质”图标上轻松找到此类图标。访问:https://material.io/icons/

谷歌还建议我们使用自定义颜色,使用setColor()方法显示在白色通知图标后面。

欲了解更多信息,请访问:https://developer.android.com/about/versions/android-5.0-changes.html


0
投票

任何人都在看这个,让图标正确显示的最简单方法是首先使用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);

-4
投票

android:targetSdkVersion="21"删除manifest.xml。它会工作!

© www.soinside.com 2019 - 2024. All rights reserved.