通知状态栏图标不会变为白色

时间:2019-03-25 09:12:59

标签: android android-notifications android-notification-bar

正如标题所述,当我启动时,我通知状态栏上的小图标不会更改为白色,几乎是不可见的:

enter image description here

enter image description here

Notification n  = new Notification.Builder(this)
        .setContentTitle("title")
        .setContentText("lorem ipsum dolor sit amet")
        .setSmallIcon((R.drawable.logo_ntf))
        .setLargeIcon(icon)
        .setAutoCancel(true)
        //.addAction(R.drawable.transparent, null, null)
        .build();

3 个答案:

答案 0 :(得分:0)

确保可绘制文件的透明性之后。...

尝试将以下内容添加到Notification.Builder管道:

.setColor(color);

颜色应该是资源的int值,指的是颜色,就像这样:

int color = getResources().getColor(R.color.notification_color);

不推荐使用的方式:

int color = ContextCompat.getColor(context, R.color.notification_color);

来源:setColor documentation

答案 1 :(得分:0)

对于Android 5+,您必须为通知小图标创建一个透明图标。

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notification.setSmallIcon(R.drawable.icon_transperent);
    notification.setColor(getResources().getColor(R.color.notification_color));
} else { 
    notification.setSmallIcon(R.drawable.icon);
}

检查sub-document了解更多

答案 2 :(得分:0)

原因:对于5.0棒棒糖,“通知图标必须完全为白色”。

如果我们通过将目标SDK设置为20来解决白色图标问题,则我们的应用将不会以Android Lollipop为目标,这意味着我们无法使用Lollipop特有的功能。

对于Lollipop OS版本及更高版本,Notification Builder的实施如下:

Notification notification = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notification.setSmallIcon(R.drawable.icon_transperent);
    notification.setColor(getResources().getColor(R.color.notification_color));
} else { 
    notification.setSmallIcon(R.drawable.icon);
} 

reference link并阅读文档5.0 Behavior Changes