2015-07-04 22 views
21

मैं अपने आइटम नेविगेशन दृश्य मेनू का रंग बदलने के लिए प्रयास करें:एंड्रॉयड - नेविगेशन देखें आइटम मेनू पृष्ठभूमि रंग

styles.xml

<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item> 

activated_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@color/White" /> 
    <item android:state_focused="true" android:drawable="@color/White" /> 
    <item android:state_activated="true" android:drawable="@color/White" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

दराज। एक्सएमएल:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<group 
    android:id="@+id/group_1"> 
    <item 
     android:id="@+id/drawer_menu_account" 
     android:checked="false" 
     android:title="@string/menu_account" 
     android:icon="@drawable/ic_account_grey600_24dp" /> 
    <item 
     android:id="@+id/drawer_menu_my_post" 
     android:checked="false" 
     android:title="@string/menu_my_post" 
     android:icon="@drawable/ic_pin_grey600_24dp" /> 
</group> 
[...] 

पृष्ठभूमि रंग नहीं बदलता .. मैं क्या गलत कर रहा हूँ?

उत्तर

20

आप अपनी शैलियों.एक्सएमएल फ़ाइल में नेविगेशन व्यू आइटम की पृष्ठभूमि के लिए ड्रायबल सेट नहीं करते हैं। अपने नेविगेशन देखें विजेट युक्त अपने XML लेआउट फ़ाइल खोलें, और विजेट के गुणों में निम्न पंक्ति जोड़ें:

app:itemBackground="@drawable/activated_background.xml" 

आप "एप्लिकेशन" सूचक के साथ समस्या हो रही है, साथ ही साथ में निम्नलिखित पंक्ति जोड़ें:

xmlns:app="http://schemas.android.com/apk/res-auto" 

ध्यान दें कि यह केवल चयनित सूची आइटम की पृष्ठभूमि का रंग बदलता है। यदि आप आइकन और टेक्स्ट रंग को भी बदलना चाहते हैं, तो इसके बजाय app:itemTextColor विशेषता का उपयोग करें।

+0

धन्यवाद, यह काम है। तो style.xml में लाइन को हटाया जा सकता है। –

+0

यह काम करता है लेकिन चेक राज्य के लिए चयनकर्ता –

+2

अच्छा समाधान के लिए काम नहीं कर रहा है। क्या किसी चयनित स्थिति में पृष्ठभूमि रखने का कोई तरीका है? – HaloMediaz

2

@HaloMediaz और @HemantShori एक चयनित राज्य में चयनित आइटम की पृष्ठभूमि रखने के लिए,

उपयोग एंड्रॉयड: state_checked = "true" एंड्रॉयड के बजाय: रंग राज्य संसाधन में state_pressed = "true"।

तो अपने सक्रिय रंग राज्य संसाधन इस तरह दिखना चाहिए:

activated_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@color/White" /> 
    <item android:state_focused="true" android:drawable="@color/White" /> 
    <item android:state_activated="true" android:drawable="@color/White" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 
+1

आपका उत्तर मेरे लिए सही था, लेकिन जब आप इसे कॉपी करते हैं तो कोड को देखें, आपने राज्य_चेक्टेड – tarasmorskyi

12

कोड नीचे के लिए ठीक काम करता है मुझे
मेरी नव दृश्य:

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    android:background="@color/nav.background" 
    app:menu="@menu/menu_drawer" 
    app:itemBackground="@drawable/nav_item_background" 
    app:itemTextColor="@drawable/nav_item_text"/> 

drawable/nav_item_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@color/nav.item.background" /> 
    <item android:state_checked="true" android:drawable="@color/nav.item.background" /> 
    <item android:state_focused="true" android:drawable="@color/nav.item.background" /> 
    <item android:state_activated="true" android:drawable="@color/nav.item.background" /> 
    <item android:drawable="@color/nav.item.background.default" /> 
</selector> 

drawable/nav_item_text.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@android:color/white" android:state_checked="true" /> 
    <item android:color="#bdbdbd" /> 
</selector> 
+0

पर राज्य_प्रेस को बदल दिया नहीं है विस्तृत समाधान के लिए धन्यवाद। – Khan

+0

यह अभिभावक मेनू आइटम का पृष्ठभूमि रंग बदलता है लेकिन बच्चे के बारे में क्या? – VVB

4

आप android का उपयोग करना चाहिए: नेविगेशन मेनू तरह के पीछे रंग के लिए पृष्ठभूमि = "रंग":

<android.support.design.widget.NavigationView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:id="@+id/shitstuff" 
     app:itemTextColor="@color/black" 
     app:menu="@menu/drawermenu" 
     android:background="@color/colorAccent" 
     android:layout_marginTop="-24dp" 
     /> 

और के लिए आइटम रंग itemTextColor का उपयोग = " रंग "

0

अपने चुने हुए आइटम पर पृष्ठभूमि डिस्प्ले रखने के लिए आपको

जोड़ने की आवश्यकता है आपके मेनू के प्रत्येक आइटम पर

।एक्सएमएल आइटम है, तो सेट:

app:itemBackground="@drawable/nav_view_item_background" 
अपने NavigationView पर

और अंत में:

drawable/nav_view_item_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/primary" android:state_checked="true" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 
संबंधित मुद्दे