studio multiple ejemplo con bottom activities android navigation-drawer navigationview android-navigationview

android - multiple - ¿Cómo puedo cambiar el color del separador en NavigationView?



navigation view android ejemplo (6)

Aquí está la mejor y más fácil manera de usar el menú como vista

<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:theme="@style/ThemeToolbar.NavigationView" app:itemTextColor="@color/white" app:itemIconTint="@color/white" app:headerLayout="@layout/activity_home_nav_header" app:menu="@menu/activity_home_drawer" />

ThemeToolbar.NavigatinoView

<style name="ThemeToolbar.NavigationView" > <item name="android:listDivider">@color/white</item> <item name="android:textColorSecondary">@color/white</item> </style>

Estoy tratando de usar NavigationView para implementar NavigationDrawer. He agregado el separador configurando la identificación del grupo en el menú. Sin embargo, no puedo ver el separador. Supongo que es porque el color del separador es el mismo que el fondo. Entonces quiero cambiar el color del separador. Pero no encuentro forma de cambiarlo. ¿Alguien puede ayudarme?

En la captura de pantalla, parece que hay un espacio para el separador entre History y Settings , pero no puedes verlo.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true" tools:context=".ui.MapActivity"> <LinearLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/toolbar_actionbar" /> <!--main content--> </LinearLayout> <android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/navdrawer_background" app:insetForeground="#4000" app:itemTextColor="@color/navdrawer_item_text_color" app:itemIconTint="@color/navdrawer_item_icon_tint" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer"/> </android.support.v4.widget.DrawerLayout>

drawer.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/group_feature" android:checkableBehavior="single"> <item android:id="@+id/navdrawer_item_map" android:checked="true" android:icon="@drawable/ic_drawer_map" android:title="@string/navdrawer_item_map"/> <item android:id="@+id/navdrawer_item_favourite" android:icon="@drawable/ic_drawer_fav" android:title="@string/navdrawer_item_fav"/> <item android:id="@+id/navdrawer_item_history" android:icon="@drawable/ic_drawer_history" android:title="@string/navdrawer_item_history"/> </group> <group android:id="@+id/group_settings" android:checkableBehavior="single"> <item android:id="@+id/navdrawer_item_settings" android:icon="@drawable/ic_drawer_settings" android:title="@string/navdrawer_item_settings"/> <item android:id="@+id/navdrawer_item_help" android:icon="@drawable/ic_drawer_help" android:title="@string/navdrawer_item_help"/> <item android:id="@+id/navdrawer_item_about" android:icon="@drawable/ic_drawer_about" android:title="@string/navdrawer_item_about"/> </group> </menu>


Crea un estilo en tu styles.xml. Ingrese su color preferido en el Android: listDivider

<style name="NavigationView" parent="Base.Theme.AppCompat"> <item name="android:listDivider">@color/text_lightgray</item> </style>

Haga referencia al estilo como tema de su 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="false" android:theme="@style/NavigationView" app:headerLayout="@layout/nav_header" app:menu="@menu/drawer_view" app:itemTextColor="@color/text_white"/>

Por último, asegúrese de que los grupos dentro de su menú tengan identificadores únicos. Si sus grupos no tienen el atributo id, ¡esto no funcionará!

<group android:checkableBehavior="single" android:id="@+id/group1"> <item android:id="@+id/item1" android:title="@string/item1" /> </group> <group android:checkableBehavior="single" android:id="@+id/group2"> <item android:id="@+id/item2" android:title="@string/item2" /> </group>


Respuesta perfecta:

<android.support.design.widget.NavigationView android:id="@+id/activity_principal_nav_view" android:layout_width="@dimen/size_230" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/black" android:fitsSystemWindows="true" app:insetForeground="@color/white" app:menu="@menu/settings_menu" app:itemTextColor="@color/white" app:itemIconTint="@color/white" app:headerLayout="@layout/settings_menu_header" android:theme="@style/NavigationDrawerStyle"/>


simplemente aplique la siguiente línea en style.xml

<item name="android:listDivider">your_color</item>

Lo siguiente es solo información para su conocimiento ... Si ha visto la biblioteca de soporte de diseño ... están utilizando el siguiente diseño para el separador NavigationView ...

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/listDivider"/> </FrameLayout>

aquí, puedes ver android: background = "? android: attr / listDivider" .. Así que disfruta ... y aquí está mi resultado de que cambie el color a holo_blue


y debe agregar un encabezado en blanco como separador.

me gusta

<group android:id="@+id/my_id"> <!-- Divider will appear above this item --> <item ... /> </group>

respuesta original


<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textColorPrimary">@color/menu_text_color</item> <item name="android:textColorSecondary">@color/menu_text_color</item> </style>

textColorPrimary cambia el color del encabezado.