with tutorial studio fragments ejemplo crear android material-design android-support-library androiddesignsupport navigationview

tutorial - navigationview android



¿Cómo diseñar el NavigationView de la biblioteca de Design Support? (2)

He respondido a una pregunta similar Here .

Básicamente, lo que necesita hacer es usar un Color State List Resource . Para eso, primero cree un nuevo xml (por ejemplo, drawer_item.xml) dentro del directorio de color (que debería estar dentro del directorio res ). Si aún no tiene un directorio llamado color, cree uno.

Ahora dentro de drawer_item.xml haz algo como esto

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="checked state color" android:state_checked= "true" /> <item android:color="your default color" /> </selector>

Para itemBackground , también se debe itemBackground un itemBackground separado dentro de la carpeta de dibujo. El nombre es el mismo drawer_item . android:drawable propiedad itemBackground debe establecer en lugar de android:color para itemBackground :

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/shape_rectangle_checked" android:state_checked= "true" /> <item android:drawable="@drawable/shape_rectangle" /> </selector>

Archivo shape_rectangle :

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#ffffff" /> <!--white color --> </shape>

Archivo shape_rectangle_checked :

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#25aaf1" /> <!--blue color --> </shape>

y luego establecer en su navegación como esta

app:itemIconTint="@color/drawer_item" //notice here app:itemTextColor="@color/drawer_item" //and here app:itemBackground="@drawable/drawer_item"//and here for changing the background color of the item which is checked

Así que estoy usando el NavigationView proporcionado por la biblioteca de soporte de diseño de Android

Parece que no puedo encontrar ejemplos sobre cómo diseñarlo.

Hasta ahora tengo:

<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" app:headerLayout="@layout/header" app:menu="@menu/drawer" app:itemTextColor="@color/black" app:itemIconTint="@color/black"/>

Diseñar el encabezado es fácil, ya que está bajo su propio diseño XML, pero el cuerpo es un archivo de recursos de menú y no un diseño.

  • app:itemTextColor cambia el color del texto
  • app:itemIconTint cambia el color del icono
  • app:itemBackground cambia el color de fondo del elemento

Entonces, ¿cómo establecer

  • fondo del elemento seleccionado
  • color del texto del elemento seleccionado
  • icono seleccionado elemento tinte

Para expandir la respuesta de @ Sash_KP, para el xml en la carpeta de drawable , no necesita el @drawable/shape_rectangle y @drawable/shape_rectangle_check . Puedes usar @color/your_color .

También para API >= 21 , he notado que los elementos del menú de navegación tienen un selector predeterminado. Notará que si toca y mantiene presionado el elemento del menú, aparecerá una onda. El uso de un itemBackground personalizado no anulará la ondulación predeterminada. Por lo tanto, si usas un ripple drawable , se crearán dos rizos. Además, los elementos del menú con los ripple drawables no le permiten tener un estado presionado por algún motivo (el rizo predeterminado solo aparecerá si mantiene presionado).

Así que para API >= 21 no recomendaría el uso de un ripple drawable . Simplemente use un selector drawable regular sin ondulaciones personalizadas.