¿Cómo coloco los widgets encima y debajo de una vista de lista?

Tengo una vista de lista y quiero poner cosas tanto arriba (en el eje y) y debajo (eje y) que incluye imágenes, vistas de texto y una fila de botones. A continuación se muestra una versión simplificada de lo que estoy creando. Desafortunadamente, la lista cubre (es decir, sobre el eje z) el encabezado para que el texto del encabezado no esté visible en lugar de estar debajo (en el eje y)

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/footer" android:text="footer" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true" /> <ListView android:id="@+id/list_view" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_above="@id/footer" android:background="#ff9999ff"/> <TextView android:id="@+id/header" android:text="header" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentTop="true" android:layout_above="@id/list_view" android:baselineAlignBottom="false" /> </RelativeLayout> 

Aquí está la clase de actividad correspondiente:

 public class SampleListActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_activity); } } 

No pude conseguir un diseño relativo para trabajar en Android 1.5, pero sí conseguí Linear Layout para trabajar. A continuación se muestra mi solución:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/header" android:text="header" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="0" /> <ListView android:id="@+id/list_view" android:layout_height="fill_parent" android:layout_width="fill_parent" android:background="#ff9999ff" android:layout_weight="1"/> <TextView android:id="@+id/footer" android:text="footer" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="0" /> </LinearLayout> 

Esto debería funcionar utilizando RelativeLayout:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/header" android:text="header" android:layout_height="wrap_content" android:layout_width="fill_parent" /> <TextView android:id="@+id/footer" android:text="footer" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true"/> <ListView android:id="@id/android:list" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_below="@id/header" android:background="#ff9999ff"/> </RelativeLayout> 

Editar : eliminado android: orientación como se sugiere

Si está orientado a Android 1.6 o superior, agregue un android:layout_below="@id/header" a sus atributos existentes en el ListView .

Si sigues orientado a Android 1.5, necesitarás hacer ese android:layout_below="@+id/header" y tal vez quitar el signo + del atributo android:id="@+id/header" en TextView .

RelativeLayout , a partir de 1.6, admite referencias directas a otros widgets, siempre y cuando la primera aparición del valor ID tenga el signo + .

Sólo tiene que poner el peso 1 a la lista dentro de un diseño lineal, las otras textviews / botones / etc no necesitan tener ningún valor de peso.

Aquí hay un ejemplo: https://bitbucket.org/generalplus/android_development/src/5a892efb0551/samples/ApiDemos/res/layout/linear_layout_9.xml

  • Alinear 2 textos, 1 normal, 1 opuesto
  • Android: ¿Cómo obtener una vista dada una actividad dentro de una clase normal?
  • Obtenga de forma fiable la altura de la barra de estado para resolver problemas de navegación translúcida de KitKat
  • Programa diferentes diseños para diferentes versiones en android
  • GetMeasuredWidth devuelve un valor totalmente erróneo
  • ¿Son "GONE" opiniones perjudiciales para el rendimiento?
  • Hacer una vista de imagen extensible en gridview
  • Diseño responsable para todos los dispositivos Android
  • La creación personalizada de diseño de teclado Android
  • Tabla de soporte de diseño de Android Contenido solapado de superposición
  • Hacer una imagen circular con borde circular blanco
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.