Android-Navigation View item menu Couleur de fond
j'ai essayer de changer la couleur de mon point de Navigation menu Affichage :
les 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>
tiroir.xml:
<?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>
[...]
la couleur de fond ne change pas.. Ce que je fais mal ?
5 réponses
vous ne définissez pas le dessin pour l'arrière-plan d'un élément de vue de Navigation dans vos styles.fichier xml. Ouvrez votre fichier de mise en page XML contenant votre widget de vue de Navigation, et ajoutez la ligne suivante aux attributs du widget:
app:itemBackground="@drawable/activated_background.xml"
Si vous rencontrez des problèmes avec le "app" pointeur, ajoutez la ligne suivante:
xmlns:app="http://schemas.android.com/apk/res-auto"
Notez que cela ne change la couleur de l'arrière-plan d'un élément de liste. Si vous souhaitez l'icône et la couleur du texte pour changer ainsi, l'utilisation de la app:itemTextColor
l'attribut à la place.
le code ci-dessous fonctionne très bien pour moi
mon nav vue:
<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>
vous devez utiliser android: background= "color" pour la couleur arrière du menu de navigation comme:
<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"
/>
et pour les articles de couleurs utilisation itemTextColor="couleur"
utilisez android: state_checked=" true"au lieu de android:state_pressed = "true" dans la ressource d'état de couleur.
ainsi votre ressource d'état de couleur activée devrait ressembler à ceci:
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>
Pour avoir l'affichage de fond d'écran sur votre élément sélectionné, vous devez ajouter
android:checkable="true"
sur chaque élément de votre menu.éléments xml, puis mis :
app:itemBackground="@drawable/nav_view_item_background"
sur votre NavigationView et enfin:
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>