¿Cómo puedo establecer la configuración del pie de página y los elementos del perfil NavitationView
? se parece al cajón de navegación Bandeja de entrada por correo electrónico. Los NavitationView
elementos se inflan por recurso de menú, pero no sé cómo establecer elementos inferiores en un recurso de menú, o ¿cómo puedo establecer una vista personalizada NavigationView
o un desplazamiento inferior? He intentado poner esto <LinearLayout...>
como vista de pie de página, pero en pantallas pequeñas el pie de página coloca sobre los elementos y no puedo desplazarme por el menú, he intentado establecer un relleno de pie de página en NavigationView
, pero el pie de página también lo toma.
Esto no se desplaza en pantallas pequeñas:
<android.support.design.widget.NavigationView
android:id="@+id/drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/kuona_drawer_header"
app:menu="@menu/drawer">
<LinearLayout...>
</android.support.design.widget.NavigationView>
Esto se desplaza, pero el pie de página está sobre los elementos del menú:
<android.support.design.widget.NavigationView
android:id="@+id/drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:paddingBottom="96dp"
app:headerLayout="@layout/kuona_drawer_header"
app:menu="@menu/drawer">
<LinearLayout...>
</android.support.design.widget.NavigationView>
res/menu/drawer.xml
Archivo de menú del cajón :
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/action_current_list"
android:checked="true"
android:icon="@drawable/ic_current_list"
android:title="@string/current_list" />
<item
android:id="@+id/action_manage_lists"
android:icon="@drawable/ic_my_lists"
android:title="@string/my_lists" />
<item
android:id="@+id/action_search_products"
android:icon="@drawable/ic_search_black_24dp"
android:title="@string/search_products" />
<item
android:id="@+id/action_deals"
android:icon="@drawable/ic_product_promo"
android:title="@string/deals" />
</group>
</menu>
/res/menu/drawer.xml
menuItem.setIcon(Drawable)
.Respuestas:
Si desea un pie de página fijo (sin desplazamiento) en su menú de navegación, necesita ajustar NavigationView alrededor de otro diseño, como lo ha publicado. NavigationView funciona como FrameLayout, por lo que esto termina "apilando" el diseño interno en la parte superior de los elementos del menú NavigationView. Aquí hay una forma de organizarlo, usando LinearLayout para los elementos del pie de página:
Pie de página fijo
Usé TextViews en este ejemplo, pero puede usar lo que quiera para las vistas de pie de página. Para evitar que los elementos del pie de página se superpongan con la parte inferior del menú, agregue algunos elementos ficticios al final del archivo de recursos del menú (estos actuarán como "espaciadores"):
res / menu / drawer.xml
Por último, no olvide agregar oyentes de clics en su Actividad para las vistas de pie de página reales:
Pie de página de desplazamiento
Sin embargo, si permite que el pie de página se desplace con el resto de NavigationView, simplificará las cosas (no hay diseños adicionales ni escuchas de clic). Simplemente agregue los elementos del pie de página a su archivo de recursos de menú como único
<group>
(esto creará una línea de separación ), y todo se manejará automáticamente y se desplazarán juntos:res / menu / drawer.xml
fuente
<group>
si desea una línea de separación; de lo contrario, el pie de página de navegación de la aplicación de gmail se ve como elementos de menú normales (al menos para mí).<dimen name="design_navigation_padding_bottom" tools:override="true">48dp</dimen>
en endimen.xml
lugar de usar elementos ficticios en el menú! es perfecto !Solo le daré una pista de cómo resolverlo, pero no tengo la oportunidad de probarlo en NavigationView, y estoy bastante seguro de que funcionará.
aquí el formato de muestra xml;
aquí está el resultado:
el truco consiste en aplicar relleno al padre y menos margen al hijo.
Prueba rápida:
fuente
Siguiendo los enfoques descritos en las otras respuestas de vistas de navegación anidadas, surgieron algunos problemas:
Mi solución para todos estos problemas fue la siguiente:
Aquí, NestedScrollView actúa como un elemento principal de desplazamiento para el sub-NavigationView. Eso significa que el sub-NavigationView nunca muestra las barras de desplazamiento, pero todo el contenido se muestra de forma plana.
El diseño 'spacer_to_bottom' llena todo el espacio restante, de modo que con algunos iconos de menú, el pie de página todavía está en la parte inferior.
Finalmente, el pie de página fijo se agrega al diseño lineal, que comienza con el menú real (sub-NavigationView), el espaciador, y tiene en la parte inferior el pie de página.
Aquí puede encontrar el ejemplo de trabajo completo como AndroidStudio-Project: https://github.com/MarcDahlem/AndroidSidemenuFooterExample
Especialmente el cajón de navegación se puede encontrar aquí: https://github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml
Capturas de pantalla:
fuente
La respuesta más simple es agregar un botón dentro del diseño del cajón y establecer la gravedad en la parte inferior del
navigationview.xml
.Aquí está el código:
fuente
Debe tener un diseño de vista de navegación de contenedor y luego debería contener dos diseños de navegación más. Los alinea con la parte superior e inferior del diseño principal.
Recomendaría usar una vista de navegación como padre y no un FrameLayout porque es esencialmente un ScrimFrameLayout e interactúa mejor con la barra de estado.
Aquí tienes un ejemplo de cómo debería verse tu actividad:
Puede leer más sobre esto y ver un ejemplo aquí: http://blog.nitish.io/post/122633295558/android-design-library-navigationview-with-top
fuente
Sé que es una respuesta tardía, pero es la respuesta perfecta y precisa que buscan la mayoría de los desarrolladores.
Para agregar pie de página en la vista de navegación, agregue una vista personalizada en el menú de navegación como se muestra a continuación:
footer_navigation_menu.xml
Ahora, agregue la vista anterior en su menú xml con el atributo de grupo para que pueda diferenciarse como pie de página en el menú.
profile_menu.xml
Eso es. A continuación se muestra la salida:
fuente
Es una especie de fastidio que NavigationView no tenga una disposición para agregar pie de página. Pero puedes probar algo como esto
En caso de que su pie de página sea una lista,
Pero, si se trata de algún tipo de vista personalizada,
Además, en este caso, deberá configurar
x = height of your custom footer view
Espero eso ayude.
fuente
Hice lo mismo de la siguiente manera:
Aquí lo principal es que pongo la gravedad del diseño en la parte inferior, por ejemplo
fuente
Siguiendo su enfoque, algunos cambios menores pueden ayudar a lo que desea lograr.
Y configure algunos elementos de código auxiliar en el menú, para que los elementos del menú no se superpongan.
También querrá agregar un oyente de clics a su elemento de pie de página.
fuente
Mi solución con pie de página fijo y menús de desplazamiento (100% probado)
fuente
Así es como consigo agregar diseño en la parte inferior de la navegación:
Bibliotecas actualizadas
fuente
NavigationView
el primer hijo es el queListView
contiene tanto el encabezado como los elementos del menú.Lo único que se necesita para agregar un pie de página es llamar .addFooterView a ListView
Más información: http://www.andreabaccega.com/blog/2015/08/28/how-to-add-footer-to-navigationview/
Copiar y pegar código:
fuente
Simplemente coloque otro diseño dentro de su NavigationView:
El truco es usar layout_gravity = "bottom" - esto pondrá todo tu diseño en la parte inferior y prueba, test2 están apilados correctamente.
fuente
utilizar este..
luego configure el relleno inferior en NavigationMenuView
fuente
Prueba esto, esto funciona para mí.
fuente
Yo uso este formulario, trabajo para mí. en paisaje y retrato.
fuente
fuente
<android.support.design.widget.NavigationView>...</android.support.design.widget.NavigationView>
. para obtener más detalles, consulte el repositorio de github ( github.com/mehul0/AndroidSidemenuFooterExample-master )fuente
La estructura de diseño del encabezado y pie de página fijos en el menú del cajón:
El diseño completo:
fuente
Prueba esto, esto funciona para mí. https://github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml
Sin embargo, debe deshabilitar NavigationViewScrolling para un desplazamiento más suave
Capturas de pantalla:
fuente
Pie de página desplazable para la versión> 23.xx
Finalmente logré lograr lo que quería, desafortunadamente parece que ya no es posible simplemente tomar la referencia a ListView y agregar un encabezado y pie de página como en las versiones por debajo de 23.xx (como lo describe Andrea Baccega). Aún es posible hacer esto para el encabezado:
Pero no es posible agregar un pie de página en este momento. Sin embargo, encontré una solución en caso de que solo esté tratando de agregar un pie de página: simplemente invierta la vista, esto agregará el encabezado en la parte inferior que se comporta como un pie de página normal. Solo asegúrese de crear su menú en orden inverso
fuente
Mi solución personal para el encabezado y pie de página fijos es extender NavigationView de la siguiente manera:
Originalmente, NavigationView crea un LinearLayout como primer elemento en RecyclerView y desplaza todo el contenido junto. La idea en esto es crear vistas separadas para el pie de página y el encabezado y luego empujarlas hacia arriba y hacia abajo usando Gravity. Más tarde, al medir el contenido de RecyclerView, se establece el contenido de desplazamiento.
Aquí está la biblioteca que contiene el código anterior que escribí. https://github.com/guness/NavigationView
Buen lado de esto, ahora puedo definir la vista de pie de página en el xml al igual que el encabezado en nativo:
fuente
Aquí hay una solución que no requiere anidamiento y que ajusta dinámicamente el relleno inferior del NavigationMenuView interno en función de la altura de la vista del pie de página, lo que significa que la altura del pie de página se puede establecer
wrap_content
y puede cambiar dinámicamente la visibilidad del pie de página aVISIBLE
oGONE
.Necesita definir el id de design_navigation_view en su ids.xml:
Y usa así:
Probado con
com.google.android.material:material:1.0.0
.fuente
Si está utilizando listview, puede intentarlo de esta manera. La vista de lista admite la función de agregar vista de pie de página, por lo que puede agregar una vista de pie de página personalizada R.layout.drawer_footer usando el objeto listview como se muestra a continuación
En mi caso, uso expandableListView en lugar de listview (la listview también tiene la función addFooter). Espero que de esta manera te ayude
fuente
Pon estas líneas en el diseño de tu menú. Espero que solucione su problema:
fuente