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 ?

23
demandé sur Emmanuel Loisance 2015-07-04 17:18:07

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.

26
répondu ZakDaniels99 2015-07-10 08:38:56

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>
13
répondu V. Kalyuzhnyu 2016-03-20 06:07:57

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"

4
répondu Ks Sjkjs 2016-05-18 21:53:26

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>
2
répondu whaleswallace 2015-10-09 20:03:12

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>
0
répondu user2641657 2018-02-25 19:48:53