web-dev-qa-db-fra.com

NavigationView (Modifier la couleur de l'élément sélectionné)

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>
10
Charles Galvez

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>
24
Yasoda

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.

0
KishuDroid