studio que ejemplo desde crear cero android navigation-drawer navigationview

que - Android: color de fondo del menú de visualización de navegación



navigation drawer material design (5)

Intento cambiar el color de mi elemento Menú de navegación:

styles.xml

<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>

enabled_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>

drawer.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> [...]

El color de fondo no cambia. ¿Qué estoy haciendo mal?


@HaloMediaz y @HemantShori Para mantener el fondo del elemento seleccionado en un estado seleccionado,

use android:state_checked="true" lugar de android:state_pressed="true" en el recurso de estado de color.

Por lo tanto, su recurso de estado de color activado debería verse así:

enabled_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>


Debe usar android: background = "color" para el color de fondo del menú de navegación como:

<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" />

y para artículos color use itemTextColor = "color"


El siguiente código funciona bien para mí
mi vista de navegación:

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


No establece el dibujo para el fondo de un elemento de Vista de navegación en su archivo styles.xml. Abra su archivo de diseño XML que contiene su widget de Vista de navegación y agregue la siguiente línea a los atributos del widget:

app:itemBackground="@drawable/activated_background.xml"

Si tiene problemas con el puntero de "aplicación", agregue también la siguiente línea:

xmlns:app="http://schemas.android.com/apk/res-auto"

Tenga en cuenta que esto solo cambia el color del fondo de un elemento de lista seleccionado. Si desea que el icono y el color del texto también cambien, use el atributo app:itemTextColor lugar.


Para que se muestre el fondo en el elemento seleccionado, debe agregar

android:checkable="true"

en cada elemento de sus elementos menu.xml, luego configure:

app:itemBackground="@drawable/nav_view_item_background"

en su NavigationView y finalmente:

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>