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>