Est-il possible de changer la couleur de l'élément par programme de l'élément sélectionné
dans le tiroir de navigation?
Je suis capable d'utiliser l'application: itemTextColor, mais le problème est que si je l'utilisais,
la case cochée dans le menu ne sera pas surlignée.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<group Android:checkableBehavior="single">
<item
Android:id="@+id/nav_home"
Android:icon="@drawable/ic_home_black_24dp"
Android:title="Home" />
<item
Android:id="@+id/nav_search"
Android:icon="@drawable/ic_search_black"
Android:title="Search Location" />
<item
Android:id="@+id/nav_fav"
Android:icon="@drawable/ic_favorite"
Android:title="Favorites" />
<item
Android:id="@+id/nav_route"
Android:icon="@drawable/ic_place"
Android:title="Route" />
<item
Android:id="@+id/nav_recent"
Android:icon="@drawable/ic_nav_route"
Android:title="Recent Location" />
</group>
<item Android:title="Others">
<menu>
<item
Android:id="@+id/nav_settings"
Android:checked="true"
Android:checkable="true"
Android:icon="@drawable/ic_settings"
Android:title="Settings" />
<item
Android:id="@+id/nav_about"
Android:icon="@Android:drawable/ic_menu_send"
Android:title="About" />
</menu>
</item>
</menu>
créer un sélecteur
<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>
et mettre
app:itemBackground="@drawable/nav_view_item_background"
l'élément sélectionné sera alors mis en surbrillance.
si vous voulez changer la couleur du texte, définissez
app:itemTextColor="@drawable/nav_view_item_textcolor"
et créer un sélecteur comme
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:color="@Android:color/white" Android:state_checked="true" />
<item Android:color="@color/primary" />
</selector>
Note: La réponse de Yasoda n'a pas fonctionné pour moi, ce qui est vrai dans la plupart des cas.
Bien que je règle le state_checked
sur true et que je lui donne une couleur attrayante, il semble que l'élément n'est jamais vérifié.
Pour plus de recherche, j'ai trouvé que le problème était arrivé avec l'élément de menu. Je n'avais pas donné l'élément vérifié à true dans l'élément de menu du fichier de menu.
Ensuite, je dois y ajouter une balise Android:checkable=true
.
et ça marche comme un charme.