Zsolt Boldizsar
Zsolt Boldizsar

Reputation: 2582

Changing notification icon background on Lollipop

I was going through the Notifications design pattern, and didn't find anything that talks about notification icon background. As you probably noticed, there is only a light grey background for custom notifications. But apps like Hangouts, or simply the USB Debugging notification has a custom color for their notification icon background.

Is there any possibility to change that grey into something else? (that specific circle's color programmatically)

See picture

Upvotes: 82

Views: 65607

Answers (3)

Eugen Pechanec
Eugen Pechanec

Reputation: 38243

1) Obtain Color

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

2) Set the Color to the Notification

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

The color is respected only on Lollipop and only affects background of the small icon. If a large icon is shown its contents are entirely your responsibility.

Source: NotificationCompat.Builder#setColor(int)

Upvotes: 162

Luís Ramalho
Luís Ramalho

Reputation: 10218

getColor(int) has been deprecated on Resources

We should now use one of these alternatives:

Upvotes: 3

satyapol
satyapol

Reputation: 993

if you've defined color in colors.xml then in your NotificationBuilder add value as

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

That should solve your problem. It only affect to background of the icon.

Upvotes: 10

Related Questions