Thay đổi nền biểu tượng thông báo trên Lollipop


79

Tôi đã xem qua mẫu thiết kế Thông báo và không tìm thấy bất kỳ điều gì nói về nền biểu tượng thông báo. Như bạn có thể nhận thấy, chỉ có nền màu xám nhạt cho các thông báo tùy chỉnh. Nhưng các ứng dụng như Hangouts hoặc đơn giản là thông báo Gỡ lỗi USB có màu tùy chỉnh cho nền biểu tượng thông báo của chúng.

Có khả năng nào để thay đổi màu xám đó thành màu khác không? (màu của vòng tròn cụ thể đó theo lập trình)

Xem tranh


có thể họ có biểu tượng đặc biệt với nền màu xanh lá cây?
Ahmed Hegazy

Không chắc liệu nó có còn quan trọng với bất kỳ ai hay không nhưng kể từ Android 6.1, có một cờ mới "NotificationCompat.Builder.setColorized (boolean colorrize)" cho phép thay đổi "nền xám" của thông báo.
Tobias Reich

Câu trả lời:


158

1) Lấy màu

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

2) Đặt Màu cho Thông báo

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

Màu sắc chỉ được tôn trọng trên Lollipop và chỉ ảnh hưởng đến nền của biểu tượng nhỏ . Nếu một biểu tượng lớn được hiển thị, nội dung của nó hoàn toàn do bạn chịu trách nhiệm.

Nguồn: NotificationCompat.Builder # setColor (int)


11
Theo điều này: stackoverflow.com/a/27023679/327011 setColor sẽ chỉ thay đổi màu của biểu tượng nhỏ. Hãy coi chừng.
neteinstein 12/1214

5
1) Điều này chỉ hoạt động trên LOLLIPOP. 2) Điều này không ảnh hưởng đến hình ảnh do bạn cung cấp trong setLargeBitmap. Nó chỉ tô màu nền của biểu tượng nhỏ.
Eugen Pechanec

@AlexVPerl bạn có thể thử giải pháp của tôi ngay dưới nhận xét này
satyapol

1
"setColor" là câu trả lời chính xác NẾU BẠN KHÔNG ĐẶT ICON LỚN. Bạn sẽ có biểu tượng nhỏ hiển thị lớn với my_notif_color làm nền, không có huy hiệu nhỏ được thêm vào. thử nghiệm trên android 6.0
Loda

Tôi gặp sự cố khi đặt biểu tượng có màu xanh lục nhưng khi thông báo xuất hiện, nó tự động chuyển sang màu trắng.
HUSNAIN SARWAR

10

nếu bạn đã xác định màu trong Colors.xml thì trong NotificationBuilder của bạn thêm giá trị là

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

Điều đó sẽ giải quyết vấn đề của bạn. Nó chỉ ảnh hưởng đến nền của biểu tượng.


Tôi gặp sự cố khi đặt biểu tượng có màu xanh lục nhưng khi thông báo xuất hiện, nó tự động chuyển sang màu trắng.
HUSNAIN SARWAR

3

getColor(int) đã không còn được dùng vào Resources

Bây giờ chúng ta nên sử dụng một trong những lựa chọn thay thế sau:


Tôi có một vấn đề tôi đặt vào biểu tượng có màu xanh nhưng khi thông báo xuất hiện nó thay đổi sang màu trắng tự động ..
HUSNAIN Sarwar

Nếu bạn đang sử dụng màu đặc, phương pháp cũ vẫn hoạt động tốt.
Eugen Pechanec

vẫn trắng biểu tượng hình vuông onlycoming trong 6,0 nhưng trước 5,0 appicon tốt
Harsha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.