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

时间:2016-05-04 03:04:15

标签: android colors notifications icons

我升级了android 6.0,我的应用程序有问题。

当状态栏背景颜色不是白色时,通知图标是好的。 (通知图标png只有白色和alpha)

但如果某些应用将背景颜色更改为白色,则我的通知图标不会反转为黑色。

当状态栏背景颜色由其他应用设置为白色时,如何将白色通知图标反转为黑色? (我不是说如何使用彩色图标。)

下面的图片显示了一个问题。

normal status

when changed background color to white, my icon is not changed to black only

  • 通知构建代码

    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。现在它正在运作。

2 个答案:

答案 0 :(得分:10)

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

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

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)

设置通知图标

希望这会有所帮助

答案 1 :(得分:0)

我认为问题在于设备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;
}