2011-08-02 15 views
9

Tengo un ListView que puede contener cualquier cantidad de elementos. Cuando utiliza menos que toda la altura de la pantalla, quiero mostrar un pie de página que llena el espacio restante.¿Cómo puedo hacer que el pie de página de un estiramiento de ListView llene el espacio restante?

El pie de página es solo una imagen de mosaico. No puedo simplemente establecerlo como fondo de ListView o su contenedor, porque los elementos de la lista son parcialmente transparentes y debe ser el fondo principal y no el pie de página visible a través de ellos.

Agregar la vista del pie de página funciona bien si el pie de página es de una altura fija, pero si la altura fija es mayor que la altura restante, el ListView se desplaza innecesariamente.

Hacer que la vista del pie de página fill_parent parezca no tener ningún efecto, es simplemente invisible.

Poner la vista de pie de página en el diseño principal tampoco tiene ningún efecto, porque el ListView parece llenar toda la altura a menos que tenga un valor de layout_height fijo.

¿Esto es posible?

+0

Disculpas a todos los que respondieron, me olvidé de decir que el ListView está dentro de un ListFragment, que parece ser la causa de que las soluciones de diseño principal no funcionen. Lo cambié para que fuera un fragmento normal y configuré el ListView explícitamente, usar weight ahora funciona. ¡Gracias por tus esfuerzos! – Ouchdroid

+0

hola, estoy curioso con su solución ... ¿en qué diseño puso el peso? la vista de lista o lista de elementos? – akhyar

Respuesta

1

intente ajustar el peso diseño a uno, o echa un vistazo a probar una vista de fusión: http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html

+0

ListView ocupa todo el elemento primario incluso con otro elemento que tiene un peso de 1. No puedo combinar el pie de página en ListView (AdapterView no admite addView) y fusionarlo en el elemento primario parece tener el mismo efecto que ponerlo directamente en el padre (llena todo el espacio con fill_parent; de lo contrario, no se muestra). – Ouchdroid

+0

¿Está creando dinámicamente esta vista de lista o inflándola desde un diseño? – Noah

+0

Lo estoy creando dinámicamente. – Ouchdroid

1

Deja ListView dentro de otra disposición de establecer el expandirá para llenar la pantalla.

A LinearLayout funciona mejor para esto.

Algo como esto:

<LinearLayout android:layout_height="match_parent" 
      android:layout_width="match_parent" > 
    <ListView android:layout_height="match_parent" 
       android:layout_width="match_parent" > 
     ... 
    </ListView> 
</LinearLayout> 

Esto debe llenar el LinearLayout a la parte inferior de la pantalla. Puede usar este comportamiento para controlar el aspecto de su Vista.

Espero que esto ayude!

+0

Poner una vista que se desplaza dentro de otra vista que se desplaza, es decir, 'ListView' dentro de' ScrollView' no es una buena idea. – Squonk

+0

Buen punto, cambié la respuesta para reflejar esto. – Codeman

+0

He intentado esto. El ListView ocupa todo el espacio disponible si no le doy una altura fija, incluso usando el peso (lo cual tiene sentido, por eso estoy tratando de hacer que el pie de página funcione). – Ouchdroid

0

Prueba esto y dime si funciona:

  • Ponga el diseño dos en uno de los padres (por ejemplo: Disposición lineal)
  • Para ListView: android:layout_hight="wrap_content"
  • Para pie de página: android:layout_hight="fill_parent"
+0

El ListView parece usar siempre fill_parent si se soluciona height no se especifica, wrap_content no tiene ningún efecto (lo cual tiene sentido, por lo tanto, estoy intentando hacer que funcione el pie de página). – Ouchdroid

Cuestiones relacionadas