लॉलीपॉप पर अधिसूचना आइकन पृष्ठभूमि बदलना


79

मैं अधिसूचना डिजाइन पैटर्न के माध्यम से जा रहा था , और अधिसूचना आइकन पृष्ठभूमि के बारे में बात करने वाला कुछ भी नहीं मिला। जैसा कि आपने शायद देखा है, कस्टम सूचनाओं के लिए केवल एक हल्के भूरे रंग की पृष्ठभूमि है। लेकिन हैंगआउट या केवल यूएसबी डिबगिंग अधिसूचना जैसे ऐप में उनकी अधिसूचना आइकन पृष्ठभूमि के लिए एक कस्टम रंग होता है।

क्या उस ग्रे को किसी और चीज में बदलने की कोई संभावना है? (उस विशिष्ट सर्कल का रंग प्रोग्रामिक रूप से)

तस्वीर देखो


वे हरे रंग की पृष्ठभूमि के साथ विशेष आइकन हो सकता है?
अहमद हेगज़ी

यह निश्चित नहीं है कि यह अभी भी किसी के लिए महत्वपूर्ण है, लेकिन एंड्रॉइड 6.1 के बाद से एक नया झंडा "NotificationCompat.Builder.setColorized (बूलियन रंग)" है जो एक अधिसूचना की "ग्रे पृष्ठभूमि" को बदलने की अनुमति देता है।
तोबियास रीच

जवाबों:


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 सेटकॉलर केवल छोटे आइकन का रंग बदलेगा। खबरदार।
neteinstein

5
1) यह केवल पर काम करता है LOLLIPOP। 2) यह आपके द्वारा प्रदान की गई छवि को प्रभावित नहीं करता है setLargeBitmap। यह केवल छोटे आइकन की पृष्ठभूमि को रंग देता है।
यूजेन पिंचेक

@AlexVPerl आप इस टिप्पणी के ठीक नीचे मेरे समाधान की कोशिश कर सकते हैं
satyapol

1
"setColor" सही उत्तर है, यदि आप एक बड़े ICON को सेट नहीं करते हैं। आपके पास पृष्ठभूमि के रूप में my_notif_color के साथ छोटा आइकन डिस्प्ले होगा, कोई छोटा बैज नहीं जोड़ा गया है। Android 6.0
Loda

मुझे एक समस्या है कि मैंने आइकन को हरा रंग दिया है लेकिन जब अधिसूचना दिखाई देती है तो यह अपने आप सफेद रंग में बदल जाती है।
हुसैन सार्वर

10

यदि आपने color.xml में रंग निर्धारित किया है, तो अपने NotificationBuilder में मान जोड़ें

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

इससे आपकी समस्या हल हो जानी चाहिए। यह केवल आइकन की पृष्ठभूमि को प्रभावित करता है।


मुझे एक समस्या है कि मैंने आइकन को हरा रंग दिया है लेकिन जब अधिसूचना दिखाई देती है तो यह अपने आप सफेद रंग में बदल जाता है।
हुसैन सार्वर

3

getColor(int) पर पदावनत कर दिया गया है Resources

हमें अब इन विकल्पों में से एक का उपयोग करना चाहिए:


मुझे एक समस्या है कि मैंने आइकन को हरा रंग सेट किया है, लेकिन जब अधिसूचना दिखाई देती है तो यह अपने आप सफेद रंग में बदल जाती है ..
पति सरवण

यदि आप एक ठोस रंग का उपयोग कर रहे हैं तो पुरानी विधि ठीक काम करती है।
यूजेन पिंचेक

अभी भी सफेद वर्ग चिह्न केवल 6.0 में है, लेकिन 5.0 से पहले ठीक है
हर्षा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.