繁体   English   中英

当背景颜色为白色时,不会更改Android通知图标颜色

[英]Android notification icon color is not changed when background color is white

我升级了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()); 
  • 值-V23 / styles.xml

     <style name="AppTheme" parent="android:Theme.Material.NoActionBar"> </style> 

**找到解决方案**

我在drawable目录中添加了通知图标而不是drawable- * dpi。 现在它正在运作。

回答已经很晚了,但对于那些有同样问题的人来说,

我也有这个问题,我发现问题出在图形图标上。 您可以使用此在线工具解决问题。 打开这个链接:

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 5.0或高。

https://developer.android.com/design/patterns/notifications.html
https://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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM