Android notification icon color is not changed when background color is white

萝らか妹 提交于 2019-12-18 14:51:50

问题


I upgraded android 6.0 and my app have problem.

when the status bar background color is not white, notification icon is good. (notification icon png has white and alpha only)

but if some apps change background color to white, my notification icon isn't inverted to black.

How can I invert white notification icon to black when status bar background color set white by other app? (I'm not saying how can I use color icon.)

below image shows a problem.

normal status

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

  • Notification build code

    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>
    

** Found a solution **

I added notification icons to drawable directory not drawable-*dpi. Now it's working.


回答1:


It's late to answer, but for others who have the same problem,

I had this problem too and I found that the problem is with graphical icon. You can solve the problem by using this online tool. open this link:

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=image&source.space.trim=1&source.space.pad=0&name=ic_stat_call_white

choose your image ( with large dimension ), download the resource and copy them to your project.

and finally set the notification icon using .setSmallIcon(R.drawable.ICON_NEW_NAME)

hope this helps




回答2:


I think the problem lies in device android 5.0 or high.

https://developer.android.com/design/patterns/notifications.html
https://developer.android.com/about/versions/android-5.0-changes.html

Here is a solution:

Notification notification = new Notification.Builder(context)
        .setAutoCancel(true)
        .setContentTitle("My notification")
        .setContentText("Look, white in Lollipop, else color!")
        .setSmallIcon(getNotificationIcon())
        .build();

return notification;

and method 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;
}


来源:https://stackoverflow.com/questions/37017672/android-notification-icon-color-is-not-changed-when-background-color-is-white

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!