2011-06-19 14 views
28

Tengo un ListView desplazable con elementos (como en http://developer.android.com/resources/tutorials/views/hello-listview.html). Estoy usando un ArrayAdapter para los elementos y lo uso como un parámetro en setListAdapter. Ahora me gustaría agregar un botón en la parte inferior de la pantalla, que no se desplaza con la lista. ¿Podría alguien darme algunas pistas o publicar un fragmento de código sobre cómo podría hacerse?Botón fijo debajo de un ListView desplazable

Respuesta

96

Si su actividad se extiende ListActivity entonces necesita algo como esto:

<LinearLayout android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

    <ListView android:id="@android:id/list" 
       android:layout_height="0dip" 
       android:layout_width="match_parent" 
       android:layout_weight="1" /> 

    <Button android:id="@+id/btn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

</LinearLayout> 

Observe que listview tiene un layout_weight establecido en 1. Esto mantendrá el botón fijo en su lugar en la parte inferior. Espero que ayude. ¡Buena suerte!

+1

gracias por el código ... – user4232

+1

si está usando 'weight' y' orientation' es 'vertical', entonces debería tener:' android: layout_height = "0dp' ' – Houcine

+1

Houcine, tiene razón. En una de las actualizaciones recientes, Google cambió el ADT, por lo que lanza una advertencia cuando usa 'fill_parent'. Mucho ha cambiado desde que contesté la pregunta en junio de 2011. Cambié mi respuesta y la actualicé. –

14

puede utilizar un RelativeLayout para fijar el botón en la parte inferior de su diseño, y añadir su Listview por encima de ella como esta:

<RelativeLayout android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <Button android:id="@+id/btn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true"/> 

    <ListView 
      android:id="@android:id/list" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
       android:layout_above="@id/btn" /> 
</RelativeLayout> 
+0

me genera ListView extendiendo la clase de '' ListActivity' y el uso de getListView() 'Houcline conseguirlo. Pero si ahora uso un diseño y uso 'setContentView' para establecerlo, la aplicación arroja la siguiente excepción:' Tu contenido debe tener un ListView cuyo id. Sea id 'android.R.id.list'' –

+0

, creo que deberías personalizarlo tu ListView cuando lo obtienes !! ¿puedes agregar tu código y el logcat también? – Houcine

+1

nombre su lista android: id = "@ android: id/list" si desea utilizar getListView() – mkso

1

Mi solución basada en la solution pero siempre por encima de ListViewButton

<CheckBox 
    android:id="@+id/chbRemoveIfUninstall" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"/> 
<ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_above="@id/chbRemoveIfUninstall"/> 

Cuestiones relacionadas