Android स्टेटसबार आइकन रंग


131

मैं सोच रहा था कि क्या स्टेटसबार आइकन का रंग बदलना संभव है ( स्टेटसबार का रंग नहींcolorPrimaryDark ) , यहाँ छवि विवरण दर्ज करें मान लें कि मुझे यह स्टेटसबार चाहिए:
<item name="colorPrimaryDark">@android:color/white</item>

और काले रंग में प्रतीक, क्या यह संभव है?

धन्यवाद।

संपादित करें:

एम डेवलपर पूर्वावलोकन में नया: windowLightStatusBar। अपने विषय पर इस पर फ़्लिप करना एक रंगीन अग्रभूमि का उपयोग करने के लिए सिस्टम को बताता है, जो हल्के रंग के स्टेटस बार के लिए उपयोगी है। ध्यान दें एम पूर्वावलोकन में एक बग है, जहां अधिसूचना आइकन सफेद रहते हैं, जबकि सिस्टम स्थिति आइकन सही रूप से सेमीट्रांसपेरेंट ब्लैक में बदलते हैं।

से: रोमन Nurik Google+ पोस्ट यहाँ छवि विवरण दर्ज करें

जवाबों:


24

लॉलीपॉप के बाद से नहीं। एंड्रॉइड 5.0 के साथ शुरू, दिशानिर्देश कहते हैं:

अधिसूचना आइकन पूरी तरह से सफेद होना चाहिए।

यहां तक ​​कि अगर वे नहीं हैं, तो सिस्टम केवल आपके आइकन के अल्फा चैनल पर विचार करेगा, उन्हें सफेद प्रदान करेगा

वैकल्पिक हल

लॉलीपॉप पर एक रंगीन आइकन रखने का एकमात्र तरीका यह है कि आप अपने targetSdkVersionमूल्यों को कम करें<21 कि आप , लेकिन मुझे लगता है कि आप दिशानिर्देशों का पालन करने और केवल सफेद आइकन का उपयोग करने के लिए बेहतर करेंगे।

यदि आप अभी भी तय करते हैं कि आप रंगीन आइकन चाहते हैं, तो आप नई v4 समर्थन लाइब्रेरी से ड्राएबल.कॉमपैटसेटसेट विधि का उपयोग कर सकते हैं ।


3
मैंने कुछ Google खोज की और मुझे इसका उचित तरीका नहीं मिला लेकिन अगर Android दिशानिर्देश कहते हैं कि आइकन सफेद होने चाहिए, तो यह सफेद है :) धन्यवाद!
गुइले

11
इसके लिए बेहतर वर्कअराउंड होना चाहिए। रंगों का उपयोग करने वाले कई व्यावसायिक ऐप हैं। यह Google द्वारा एक बहुत ही मूर्खतापूर्ण डिजाइन चाल है। वे फिर क्या सोच रहे थे, अगर बिल्कुल
नॉटआउट 2

यदि आप Google के समाचार ऐप को देखते हैं, तो उनके पास सफेद स्थिति बार आइकन नहीं हैं: play.google.com/store/apps/…
एडम हर्विट्ज

6
<item name="android:windowLightStatusBar">true</item>मेरे लिए काम किया।
एडम हर्विट्ज

मुझे आश्चर्य है कि जीमेल ऐप (जैसा कि 2019-04 में जारी किया गया है) स्टेटस बार व्हाइट और आइकन / टेक्स्ट डार्क-ग्रे रंग का है।
डैनियल एफ

201

हां, इसे ग्रे में बदलना संभव है (कोई कस्टम रंग नहीं), लेकिन यह केवल एपीआई 23 से काम करता है और ऊपर आपको केवल इसे अपने मानों में जोड़ना होगा-v23 / styles.xml

<item name="android:windowLightStatusBar">true</item>

यहाँ छवि विवरण दर्ज करें


2
लेकिन इसके मेनू आइटम आइकन का रंग अभी भी सफेद है अपने मेनू आइटम आइकन को काले रंग में कैसे बदलें?
मतीन चौधरी

107

@eOnOe ने उत्तर दिया है कि हम xml के माध्यम से स्टेटस बार टिंट को कैसे बदल सकते हैं। लेकिन हम इसे कोड में गतिशील रूप से भी बदल सकते हैं:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    View decor = getWindow().getDecorView();
    if (shouldChangeStatusBarTintToDark) {
        decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    } else {
        // We want to change tint color to white again.
        // You can also record the flags in advance so that you can turn UI back completely if
        // you have set other flags before, such as translucent or full screen.
        decor.setSystemUiVisibility(0);
    }
}

अच्छा समाधान! यह मेरे आवेदन के लिए वास्तव में उपयुक्त था क्योंकि मुझे एसडीके संस्करण को बदलना नहीं था।
विटोर ब्रागा

2
यह अधिक सही है: सज्जा
एंटोन सवेनोक

इससे मेरा दिन बच गया! शुक्रिया @ywwynm!
ReGaSLZR

यह सबसे अच्छा समाधान है, एमआई फोन पर भी काम करता है। तुम एक रक्षक हो!
नुमानक्मर

कृपया क्या करना चाहिए?
Ibramazin

48

यदि आपके पास एपीआई स्तर 23 से छोटा है, तो आपको इसे इस तरह से उपयोग करना चाहिए। यह मेरे लिए यह v21 / शैली के तहत घोषित करने के लिए काम किया ।

<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
        <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>

1
आपका मतलब 23. :(
8

यदि आपको इस लिंक पर जाने की तुलना में इसके बारे में नहीं पता है तो मुझे v21 / स्टाइल का कोई मतलब नहीं है। stackoverflow.com/questions/28465064/creating-styles-v21-xml
रितेश

यहां तक ​​कि अगर v21 क्वालिफायर के साथ एक style.xml में रखा गया है, तो यह केवल 23 और इसके बाद के संस्करण चलने वाले उपकरणों पर काम करता है। वास्तव में एएस लिंट ने इन वस्तुओं को एक चेतावनी के साथ हाइलाइट करते हुए कहा कि इसे उन एंड्रॉइड संस्करणों पर ध्यान नहीं दिया जाएगा जो इसका समर्थन नहीं करते हैं। tools:targetApi="23"भाग एक प्रकार का वृक्ष बताता है इस चेतावनी को दबाने के लिए।
सुबारू ताशीरो

5

Mi फोन, कुछ Meizu फोन, ब्लैकव्यू फोन, विलीफॉक्स आदि के साथ काम न windowLightStatusBarकरने के लिए सेट करना trueमुझे ऐसी हैक लगी है Mi और Meizu डिवाइसों के लिए है। यह इस समस्या का एक व्यापक समाधान नहीं है, लेकिन शायद यह किसी के लिए उपयोगी होगा।

और मुझे लगता है, अपने ग्राहक को यह बताना बेहतर होगा कि सफेद रंग की स्थिति पट्टी (उदाहरण के लिए) सफेद - एक अच्छा विचार नहीं है। अलग-अलग हैक्स का उपयोग करने के बजाय colorPrimaryDarkदिशानिर्देशों के अनुसार उपयुक्त परिभाषित करना बेहतर होगा


-3

हां आप इसे बदल सकते हैं। लेकिन Api 22 और इसके बाद के संस्करण में, NotificationCompat.Builder और setColorized (सच) का उपयोग करके:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, context.getPackageName())
                .setContentTitle(title)
                .setContentText(message)
                .setSmallIcon(icon, level)
                .setLargeIcon(largeIcon)
                .setContentIntent(intent)
                .setColorized(true)
                .setDefaults(0)
                .setCategory(Notification.CATEGORY_SERVICE)
                .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                .setPriority(NotificationCompat.PRIORITY_HIGH);

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

यह केवल अग्रभूमि सूचनाओं के लिए है और केवल अधिसूचना आइटम पर लागू होता है - अधिसूचना आइकन नहीं।
सुबारू ताशीरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.