Cómo obtener divisores en el menú de NavigationView sin títulos?
Estoy usando el nuevo NavigationView
para crear mi menú del cajón de la navegación de XML. Necesito colocar un divisor entre los elementos del menú de sección, que cambian entre las secciones de mi aplicación, y los ajustes y enlaces de ayuda y soporte en la parte inferior.
En todos los ejemplos que he visto, veo cómo esto se puede hacer poniendo otro <menu>
dentro de un <item>
, pero el <item>
requiere tener el atributo android:title
, así que lo mejor que puedo hacer es hacer El espacio en blanco del título, que deja un espacio vacío antes de los ajustes y la ayuda y la regeneración.
- La suspensión de soporte de Android v23.1.0 se desplaza
- Cómo agregar un elemento a un grupo de menús en NavigationView
- ClassNotFoundException: No encontró la clase "android.support.design.R $ styleable"
- Cambiar la separación entre el grupo de encabezados y el primer elemento
- NavigationView selecciona el elemento seleccionado como
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_section_1" android:icon="@drawable/ic_dashboard" android:title="@string/section_1" android:checked="true" /> <!-- default selection --> <item android:id="@+id/nav_section_2" android:icon="@drawable/ic_dashboard" android:title="@string/section_2" /> <item android:id="@+id/nav_section_3" android:icon="@drawable/ic_dashboard" android:title="@string/section_3" /> </group> <item android:title="@null"> <!-- I don't want a title or space here! --> <menu> <item android:id="@+id/nav_settings" android:icon="@drawable/ic_settings" android:title="@string/settings" /> <item android:id="@+id/nav_help_feedback" android:icon="@drawable/ic_help" android:title="@string/help_feedback" /> </menu> </item> </menu>
He intentado varias combinaciones de las etiquetas <menu>
, <item>
y <group>
, pero no he encontrado nada que funcione. Esto, por ejemplo, tiene el problema de usar el último elemento del grupo anterior como el título del grupo:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_section_1" android:icon="@drawable/ic_dashboard" android:title="@string/section_1" android:checked="true" /> <!-- default selection --> <item android:id="@+id/nav_section_2" android:icon="@drawable/ic_dashboard" android:title="@string/section_2" /> <item android:id="@+id/nav_section_3" android:icon="@drawable/ic_dashboard" android:title="@string/section_3" /> </group> <group> <!-- This puts @string/section_3 as the group title! --> <menu> <item android:id="@+id/nav_settings" android:icon="@drawable/ic_settings" android:title="@string/settings" /> <item android:id="@+id/nav_help_feedback" android:icon="@drawable/ic_help" android:title="@string/help_feedback" /> </menu> </item> </menu>
Sólo tiene que ser una manera fácil de hacer esto utilizando sólo la descripción del menú XML. Google tiene este mismo comportamiento en sus especificaciones de diseño de material .
EDITAR:
Otro intento más cercano:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@null"> <!-- Still a space here though! --> <menu> <group android:checkableBehavior="single"> <!-- And this checkable behavior behaves strangely for some reason --> <item android:id="@+id/nav_section_1" android:icon="@drawable/ic_dashboard" android:title="@string/section_1" android:checked="true" /> <!-- default selection --> <item android:id="@+id/nav_section_2" android:icon="@drawable/ic_dashboard" android:title="@string/section_2" /> <item android:id="@+id/nav_section_3" android:icon="@drawable/ic_dashboard" android:title="@string/section_3" /> </group> </menu> </item> <group> <!-- Finally, no space or title here! --> <item android:id="@+id/nav_settings" android:icon="@drawable/ic_settings" android:title="@string/settings" /> <item android:id="@+id/nav_help_feedback" android:icon="@drawable/ic_help" android:title="@string/help_feedback" /> </item> </menu>
Esto no deja espacio entre los elementos arriba y debajo del divisor, pero todavía hay el espacio en la parte superior ahora. Además, el android:checkableBehavior="single"
comporta extrañamente. Los elementos no se seleccionan cuando se seleccionan la primera vez y los elementos no se deseleccionan una vez que otros se seleccionan.
- ¿Cómo agregar valor de notificación para el elemento en NavigationView para el cajón de diseño de material?
- Cómo configurar la tipografía personalizada en los elementos de NavigationView?
- ¿Cómo puedo eliminar el relleno superior innecesario de la vista de navegación?
- ¿Cómo puedo abrir mediante programación (mostrar en pantalla) NavigationView
- Android - Navegación Ver el color del fondo del menú del elemento
- Uso de NavigationView desde Android Design Support Library
- ¿Agregar MenuItem a NavigationView con el icono y el título?
- Translúcido StatusBar con el color dinámico ActionBar en Android
De: NavigationView: ¿cómo insertar divisor sin subgrupo?
Parece que solo necesitas dar a tu group
etiquetas ID únicas.
<group android:id="@+id/my_id"> <!-- Divider will appear above this item --> <item ... /> </group>
Como dice la respuesta:
[NavigationView] creará un divisor cada vez que se cambie el ID del grupo
Esta es la solución exacta para su pregunta aquí.
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <group android:id="@+id/menu_top" android:checkableBehavior="single"> <item android:title="Switch Team"> <menu> <item android:id="@+id/team" android:title="" app:actionLayout="@layout/layout_spinner_for_drawer"/> </menu> </item> </group> <group android:id="@+id/menu_bottom" android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/home" android:title="Home" /> <item android:id="@+id/nav_share" android:icon="@drawable/sharebox" android:title="Sharebox" /> <item android:id="@+id/nav_recognize" android:icon="@drawable/recognize" android:title="Recognize" /> <item android:id="@+id/nav_contact_us" android:icon="@drawable/contactus" android:title="Contact Us" /> <item android:id="@+id/nav_logout" android:icon="@drawable/signout" android:title="Logout" /> </group> </menu>
- Deshágase de "El servicio exportado no requiere permiso" warning
- Agregar una barra de progreso en WebView