Android लॉलीपॉप नेविगेशन बार का रंग बदलता है


137

मेरे ऐप में मुझे नीचे नेविगेशन बार रंग बदलने की आवश्यकता है। मैं कई पोस्ट देखा, लेकिन समाधान के साथ नहीं ढूँढ सकते। मैं appCompat पुस्तकालय का उपयोग कर रहा हूँ।

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

V21 / styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
       <item name="android:windowBackground">@drawable/bgpreview</item>
       <item name="android:colorPrimary">@color/MyColor</item>
       <item name="android:colorPrimaryDark">@color/MyColor</item>
       <item name="android:windowContentOverlay">@null</item>
       <item name="android:textColorPrimary">@color/MyColor</item>
       <item name="colorAccent">@color/MyColor</item>
       <!-- darker variant for the status bar and contextual app bars -->
       <item name="android:windowContentTransitions">true</item>
       <item name="android:windowAllowEnterTransitionOverlap">true</item>
       <item name="android:windowAllowReturnTransitionOverlap">true</item>
       <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
       <item name="android:windowSharedElementExitTransition">@android:transition/move</item>

       <item name="windowActionBar">false</item>
       <item name="android:textAllCaps">false</item>

</style>

क्या आप style.xml फ़ाइल पोस्ट कर सकते हैं? पूरी बात नहीं। बस संबंधित स्निपेट
ब्लैकबेल्ट

मैं डिफ़ॉल्ट रंग कैसे सेट कर सकता हूं?
GMX

जवाबों:


262

यह अंदर किया जा सकता है styles.xml का उपयोग कर

<item name="android:navigationBarColor">@color/theme_color</item>

या

window.setNavigationBarColor(@ColorInt int color)

http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

ध्यान दें कि विधि Android लॉलीपॉप में पेश की गई थी और यह एपीआई संस्करण <21 पर काम नहीं करेगा।

दूसरा तरीका (किटकैट पर काम करता है) विंडोटांसलुकेंटनैविगेशन को प्रकट करने के लिए सेट करने और नेविगेशन बार के नीचे एक रंगीन दृश्य रखने के लिए सही है।


धन्यवाद। मैंने अपनी शैली कोड <आइटम का नाम = "Android: navigationBarColor"> @ रंग / MyColor </ आइटम> को जोड़ा और अब काम करता है।
user3065901

31
क्या आइकनों का रंग बदलने का कोई तरीका है?
जमशेद कमरुद्दीन

10
<item name="android:navigationBarColor">@color/theme_color</item>values-21फ़ोल्डर में जोड़ें
प्रतीक बुटानी

यह भी सुनिश्चित करें कि (लक्ष्य Android संस्करण) कम से कम API 21
MujtabaFR

2
इसे अपनी शैली की फ़ाइल में न डालें <item name="android:windowDrawsSystemBarBackgrounds">false</item>अन्यथा सिस्टम बार रंग काम नहीं करेगा।
एलेक्सी ओज़ेरोव

70

यहां बताया गया है कि इसे प्रोग्रामिक रूप से कैसे किया जाता है:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                
   getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color));
}

संगत पुस्तकालय का उपयोग करना:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

मान-v21 / style.xml फ़ोल्डर में xml के साथ कैसे करें:

<item name="android:navigationBarColor">@color/your_color</item>

1
यह एक अजीब विकल्प है! मेरे पास एक ऐसा ऐप है जो नेवबार को काले बटन से काला बनाता है जिससे घर / पीछे / हाल के नरम बटन को देखना असंभव हो जाता है ...
जॉनीटेक्स

37

यहां नेविगेशन बार रंग बदलने के कुछ तरीके दिए गए हैं।

एक्सएमएल द्वारा

1- मान- v21 / style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>

या यदि आप इसे केवल मूल्यों / फ़ोल्डर का उपयोग करके करना चाहते हैं तो-

2- मान / शैली। xml

<resources xmlns:tools="http://schemas.android.com/tools">

<item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>

आप नेविगेशन बार के रंग को प्रोग्रामिंग द्वारा भी बदल सकते हैं ।

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));

संगत पुस्तकालय का उपयोग करके-

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

कृपया अधिक जानकारी के लिए लिंक पाएं- http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)


मैं उपयोग करने में सक्षम नहीं था tools:targetApi? क्या यह कार्यक्षमता पुरानी है?
विंकलार्र

1
@winklerrr यह पुराना नहीं है, मेरा अद्यतन उत्तर देखें।
D_Alpha

यदि मैं प्रोग्राम को रंग बदलने का निर्णय लेता हूं - तो क्या मुझे प्रत्येक में ऐसा करने की आवश्यकता है Activity/ Fragment? या वहाँ एक निश्चित जगह है जहाँ मुझे यह करना चाहिए? शायद कक्षा में है कि फैली हुई है Application?
विंकलार्र

1
आपको प्रत्येक गतिविधि में ऐसा करने की आवश्यकता है या आप विभिन्न गतिविधि के लिए अलग शैली बना सकते हैं।
D_Alpha

styles.xmlउपयोग करते समय ओवरराइड करने की आवश्यकता नहीं हैtools:targetApi
फ़रशाद तहमासबी


1

आप क्लिक करके थीम संपादक का उपयोग करके भी अपने विषय को संशोधित कर सकते हैं:

उपकरण -> Android -> थीम संपादक

फिर, आपको अपनी .xml या .class फ़ाइलों में कुछ अतिरिक्त सामग्री डालने की आवश्यकता नहीं है।


अच्छी टिप! मेरे लिए यह सिर्फ टूल्स -> थीम एडिटर के अंतर्गत था।
सैम

अब थीम एडिटर 3.3 के साथ शुरू हो गया है।
जेनिक्स

1
  1. काले रंग बनाएँ: <color name="blackColorPrimary">#000001</color> (not #000000)
  2. शैली में लिखें: <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

समस्या यह है कि एंड्रॉइड उच्च संस्करण # 000000 के लिए ट्रैसपरेंट बनाते हैं


0

आप इसे सीधे style.xml फ़ाइल में बदल सकते हैं \ app \ src \ main \ res \ मान \ style.xml

पुराने संस्करणों पर यह काम, मैं इसे किटकैट में बदल रहा था और यहां आ गया।

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