Quiero hacer una vista de chat usando ListView donde aparecen los nuevos mensajes en la parte inferior de la pantalla (por lo tanto, uso android: stackFromBottom = "true") y quiero agregar un encabezado al ListView que aparecerá en la parte superior de la pantalla. Cuando hay pocos mensajes, habrá un espacio vacío entre el encabezado y los mensajes, cuando haya muchos mensajes, el ListView será desplazable y el encabezado se ocultará, cuando los mensajes del fondo estén visibles (el encabezado se desplazará junto con el resto de los mensajes). El problema es que no puedo decirle a ListView que permita que sus encabezados o elementos llenen el espacio restante en la pantalla. android: layout_height = "fill_parent" no ayuda. Puedo hacer el encabezado estático usando RelativeLayout, pero no quiero. ¿Algunas ideas?Android ListView: encabezado/pie de página que llena el espacio restante en la pantalla
Respuesta
¿Por qué no simplemente pone la vista de lista en un diseño de tabla con 3 filas. Coloque la vista de lista en la fila del medio y luego use la fila superior e inferior como encabezado y pie de página.
Use un LinearLayout en vertical con el encabezado en la parte superior, su ListView en el medio con layout_weight = "1" y luego su pie de página.
Una solución si desea que el Encabezado sea desplazable. Es inflar la posición 1 en su adaptador siendo el encabezado que desea desplazar.
Pero cuando desplazo el ListView, el encabezado permanecerá visible. Como dije, el caso es un poco más problemático: quiero el encabezado en la parte superior, cuando no hay suficientes mensajes (y los mensajes están en la parte inferior), pero cuando el espacio está lleno de mensajes y el ListView se puede desplazar, quiero el encabezado para desplazarse junto con ListView. – Elena
Hmmm ... es un poco más complicado. Verifica mi nueva respuesta. –
¡Gracias por seguir respondiendo! Todavía no sé cómo colocar el encabezado en la parte superior de la pantalla (alinearlo con la parte superior de la pantalla) y colocar el resto de los elementos en la parte inferior cuando no hay suficiente contenido para completar el ListView. Hacer algunos cálculos de núcleo duro en el código es una solución posible, pero estoy buscando una forma más inteligente de hacerlo. – Elena
Sólo hacer un diseño diferente, como header_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@drawable/listitem_background"
android:layout_marginLeft="4dip" android:layout_marginRight="4dip"
android:gravity="center_vertical|center_horizontal"
>
<TextView android:id="@+id/nearByLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load More Results"
android:textColor="#000"
android:textStyle="bold"
android:textSize="20sp"
/>
</LinearLayout>
Y en su actividad agregarlo como
View headerView = inflater.inflate(R.layout.header_list, null);
yourlistView.addHeaderView(headerView);
Gracias por su respuesta, pero esa no era la pregunta. La forma en que he resuelto la mía por ahora es poner el encabezado en la parte superior de la pantalla y cuando el primer elemento de la lista ya no está visible para ocultarlo con la animación. – Elena
- 1. ¿Cómo puedo hacer que el pie de página de un estiramiento de ListView llene el espacio restante?
- 2. Diseño CSS sin tablas de tres filas con una fila central que llena el espacio restante
- 3. Extender WPF ListView vacío para ocupar el espacio restante
- 4. Actividad translúcida que llena toda la pantalla
- 5. Diseño de CSS que llena el espacio disponible
- 6. Android - Actividad que no llena la pantalla principal
- 7. hacer que div llene el espacio restante
- 8. Android 4.0.3 CursorAdapter no llena ListView en changeCursor
- 9. Deje que el espacio ocupe el ancho restante?
- 10. ¿Cómo hacer que una distribución lineal llene el espacio restante en un diseño relativo?
- 11. Vista de pie de página de Android ListView que no se coloca en la parte inferior de la pantalla
- 12. EditarTexto no ocupará el espacio restante
- 13. Android: El cursor de la ventana está llena
- 14. Espacio multiplataforma restante en el volumen usando python
- 15. ¿Cómo hacer que un DIV llene el espacio vertical restante de la ventana del navegador?
- 16. WPF Dockpanel primer hijo utiliza el espacio restante
- 17. IOException para unidad llena o sin espacio
- 18. Android establece View.GONE no "libera" espacio en listview
- 19. Silverlight: se extiende al espacio restante en StackPanel
- 20. ¿El color azul restante en :: selección?
- 21. Listview no se llena, getView() no se llama
- 22. Android no tiene suficientes mosaicos para la página?
- 23. Android ListView que no se desplaza?
- 24. Detectando que la pila está llena
- 25. Cómo forzar que ListView muestre la primera página mediante programación
- 26. campo oculto en ListView Android?
- 27. Android agregando pie de página a ListView addFooterView()?
- 28. ¿Cómo borrar/eliminar pantalla/página de la pantalla en QML?
- 29. Android: evitar que la pantalla se apague
- 30. Automatización de una columna de cuadrícula para ocupar el espacio restante en el elemento primario
Lo que Marcos dijo funciona, pero me quedo con la disposición de la tabla. Puede establecer su encabezado y pie de página a una altura fija (en inmersión) y permitir que la vista de lista se encoja/crezca en altura según el dispositivo que se use. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Igual que con la respuesta de Marcos. Realmente necesito que este encabezado se desplace junto con ListView, cuando se llene el espacio vacío. Lo he visto en iPhone pero aún no en Android, así que no sé si es posible o no. – Elena