2015-10-24 9 views
14

जैसा कि शीर्षक कहता है, मैं डिफ़ॉल्ट बार के बजाय एक अंधेरे रंग के रंग के लिए स्टेटस बार आइकन का रंग कैसे बदलूं।एंड्रॉइड में स्टेटस बार अधिसूचना आइकन 'रंग/टिंट कैसे बदलें (marshmallow और 23+ से ऊपर)?

से

enter image description here

dark status bar

उत्तर

52

स्थिति बार आइकन 'के लिए करने के लिए डिफ़ॉल्ट सफेद के बजाय एक अंधेरे टिंट है, में निम्नलिखित टैग को जोड़ने आपका styles.xml (या values-v23/styles.xml में अधिक सटीक) फ़ाइल:

<item name="android:windowLightStatusBar" tools:targetApi="23">true</item> 

आप किसी भी View को निर्धारित कर उस कार्यावधि में झंडा बदल सकते हैं:

View yourView = findViewById(R.id.your_view); 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    if (yourView != null) { 
     yourView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 
    } 
} 

आप परिवर्तन रीसेट इस तरह ध्वज साफ़ करना चाहते हैं:

yourView.setSystemUiVisibility(0); 
+1

यदि आप प्रकाश स्थिति बार सेट करने की प्रोग्रामेटिक विधि का उपयोग करते हैं, तो क्या इसे नियमित अंधेरे संस्करण में बदलने का कोई तरीका है? – Andrew

+0

यदि यह काम नहीं करता है, तो आप 'दृश्य' itslef को पुनर्जीवित करने का प्रयास कर सकते हैं जिस पर ध्वज सेट किया गया था। मेरे लिए, जब प्राथमिकता बदल जाती है तो मैं सिर्फ 'फ्रैगमेंट' को फिर से बना देता हूं। दुर्भाग्य से इस का कारण बनता है '; ' rootView.setSystemUiVisibility (rootView.getSystemUiVisibility() & ~ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR): – Sazid

+0

<आइटम नाम = "एंड्रॉयड: windowLightStatusBar" उपकरण: targetApi = "मीटर"> सच –

1

नीचे नमूना कोड है, पोर्ट्रेट & लैंडस्केप के बीच स्विच करते समय स्टेटस बार रंग बदलें। पोर्ट्रेट मोड: लाइट बार, डार्क आइकन; लैंडस्केप मोड: गहरा बार, हल्का आइकन; थीम: "Theme.AppCompat.Light"

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     Window window = getWindow(); 
     View decorView = window.getDecorView(); 
     if(Configuration.ORIENTATION_LANDSCAPE == newConfig.orientation) { 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       window.setStatusBarColor(Color.parseColor("#55000000")); // set dark color, the icon will auto change light 
      } 
     } else { 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       window.setStatusBarColor(Color.parseColor("#fffafafa")); 
      } 
     } 
    } 
संबंधित मुद्दे