j'essaie de changer la couleur de mon article Menu Navigation View:
styles.xml
<item name="Android:activatedBackgroundIndicator">@drawable/activated_background</item>
activé_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 .. Qu'est-ce que je fais mal?
Vous ne définissez pas le dessin pour l'arrière-plan d'un élément Vue de navigation dans votre fichier styles.xml. Ouvrez votre fichier de présentation XML contenant votre widget 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 pointeur "app", ajoutez également la ligne suivante:
xmlns:app="http://schemas.Android.com/apk/res-auto"
Notez que cela ne change que la couleur de l'arrière-plan d'un élément de la liste sélectionné. Si vous souhaitez que l'icône et la couleur du texte changent également, utilisez plutôt l'attribut app:itemTextColor
.
Le code ci-dessous fonctionne bien pour moi
ma vue de navigation:
<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 afficher la couleur de fond du menu de navigation.
<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 éléments color, utilisez itemTextColor = "color"
@HaloMediaz et @HemantShori Pour conserver l'arrière-plan de l'élément sélectionné dans un état sélectionné,
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:
activé_background.xml
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="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 que l'arrière-plan s'affiche sur l'élément sélectionné, vous devez ajouter
Android:checkable="true"
sur chaque élément de vos éléments menu.xml, puis définissez:
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>