当背景颜色为白色时,Android 通知图标颜色不会更改
Posted
技术标签:
【中文标题】当背景颜色为白色时,Android 通知图标颜色不会更改【英文标题】:Android notification icon color is not changed when background color is white 【发布时间】:2016-08-29 07:08:55 【问题描述】:我升级了 android 6.0 并且我的应用出现了问题。
当状态栏背景颜色不是白色时,通知图标是好的。 (通知图标png只有白色和alpha)
但如果某些应用将背景颜色更改为白色,我的通知图标不会反转为黑色。
当状态栏背景颜色被其他应用程序设置为白色时,如何将白色通知图标反转为黑色? (我不是说如何使用彩色图标。)
下图显示了一个问题。
正常状态
将背景颜色更改为白色时,我的图标不会仅更改为黑色
通知构建代码
Notification.Builder mBuilder =
new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_notifications_none)
.setPriority(priority2)
.setOngoing(true);
mBuilder.setContent(generateMessageView(message));
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder.setContentIntent(intent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
values-v23/styles.xml
<style name="AppTheme" parent="android:Theme.Material.NoActionBar">
</style>
找到解决方案
我将通知图标添加到drawable 目录而不是drawable-*dpi。现在它正在工作。
【问题讨论】:
看看这个post。另请阅读此documentation。希望你能得到一个线索。干杯.... :) @verbose 我已经阅读过,但会再次检查。谢谢 我尝试了您的解决方案,但它对我不起作用。 我希望你考虑将你的解决方案从问题复制到答案,它只是解决了我的问题,而这个问题的答案没有,但我看到你写的纯粹是运气。我本可以只是路过,找不到合适的答案,然后关闭您的问题,尽管它已经包含我需要的内容。 【参考方案1】:回答晚了,但对于其他有同样问题的人来说,
我也有这个问题,我发现问题出在图形图标上。 您可以使用此在线工具解决问题。 打开此链接:
https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=image&source.space.trim=1&source.space.pad=0&name=ic_stat_call_white
选择你的图片(大尺寸),下载资源并将它们复制到你的项目中。
最后使用.setSmallIcon(R.drawable.ICON_NEW_NAME)
设置通知图标
希望对你有帮助
【讨论】:
在android 8版本中显示为深灰色方块【参考方案2】:我认为问题出在设备 android 5.0 或更高版本上。
https://developer.android.com/design/patterns/notifications.htmlhttps://developer.android.com/about/versions/android-5.0-changes.html
这里有一个解决方案:
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("My notification")
.setContentText("Look, white in Lollipop, else color!")
.setSmallIcon(getNotificationIcon())
.build();
return notification;
和方法getNotificationIcon()
:
private int getNotificationIcon()
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_black : R.drawable.ic_nomarl;
【讨论】:
谢谢,但它不起作用。我从 android 示例中找到了 LNotifications,当其他应用程序使用白色状态栏运行时,它没有黑色图标图像,而是白色到黑色(深灰色)。而且我没有从 LNotifications 中找到任何改变颜色的特殊代码。以上是关于当背景颜色为白色时,Android 通知图标颜色不会更改的主要内容,如果未能解决你的问题,请参考以下文章
如果使用 Parse Push,是不是可以为 Android 上的通知抽屉中的图标设置背景颜色?