更改棒棒糖上的通知图标背景


79

我正在经历 通知”设计模式,但没有发现任何有关通知图标背景的内容。您可能已经注意到,自定义通知只有浅灰色的背景。但是环聊或简单的USB调试通知等应用的通知图标背景具有自定义颜色。

是否有可能将灰色更改为其他颜色?(以编程方式指定特定圆圈的颜色)

看图片


可能是带有绿色背景的特殊图标?
Ahmed Hegazy 2014年

不知道它是否对任何人仍然重要,但是从Android 6.1开始,有一个新标志“ NotificationCompat.Builder.setColorized(boolean colorize)”可用于更改通知的“灰色背景”。
Tobias Reich

Answers:


158

1)获得颜色

int color = 0xff123456;
int color = getResources().getColor(R.color.my_notif_color);
int color = ContextCompat.getColor(context, R.color.my_notif_color);

2)将颜色设置为通知

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setColor(color);
Notification notif = builder.build();

仅在棒棒糖上尊重颜色,并且仅影响小图标的背景。如果显示一个大图标,则其内容完全由您负责。

资料来源:NotificationCompat.Builder#setColor(int)


11
据此:stackoverflow.com/a/27023679/327011 setColor将仅更改小图标的颜色。谨防。
neteinstein 2014年

5
1)仅适用于LOLLIPOP。2)这不会影响您在中提供的图像setLargeBitmap。它仅上色小图标背景。
Eugen Pechanec 2014年

@AlexVPerl,您可以在此评论下方尝试我的解决方案
satyapol

1
如果您未设置大图标,则“ setColor”是正确的答案。您将以my_notif_color为背景的小图标显示为大,没有添加小徽章。在Android 6.0上测试
Loda 2015年

我有一个问题,我将图标设置为绿色,但是当出现通知时,它会自动变为白色。
HUSNAIN SARWAR '16

10

如果您在colors.xml中定义了颜色,则在NotificationBuilder中将值添加为

.setColor(getResources().getColor(R.color.<YOUR_COLOR>))

那应该解决您的问题。它仅影响图标的背景。


我有一个问题,我将图标设置为绿色,但是当出现通知时,它会自动变为白色。
HUSNAIN SARWAR '16

3

getColor(int) 已于弃用 Resources

现在,我们应该使用以下替代方法之一:


我有一个问题,我设置的图标具有绿色,但是当出现通知,它会自动更改为白色..
HUSNAIN萨瓦尔

如果您使用纯色,则旧方法效果很好。
Eugen Pechanec '16

仍然是白色方形图标,仅适用于6.0,但在Appicon之前适用于5.0罚款
Harsha
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.