2010-03-16 15 views
6

Ho una vista elenco e voglio mettere tutto sopra (sull'asse y) e sotto (asse y) includendo immagini, viste di testo e una fila di pulsanti. Di seguito è una versione semplificata di ciò che sto creando. Ancora all'elenco coperchi (cioè sopra sull'asse z) l'intestazione in modo che il testo dell'intestazione non è visibile invece di essere sotto (sull'asse y)Come posizionare i widget sopra e sotto una list list?

<?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> 

Ecco corrispondente Classe di attività:

public class SampleListActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_activity); 

    } 
} 

risposta

9

Non ho potuto ottenere il layout relativo per funzionare in Android 1.5, ma ho ottenuto Linear Layout per funzionare. Qui di seguito è la mia soluzione:

<?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> 
2

Se si sta utilizzando Android 1.6 e versioni successive, aggiungere uno android:layout_below="@id/header" agli attributi esistenti su ListView.

Se siete ancora di mira Android 1.5, è necessario fare quel android:layout_below="@+id/header" e forse togliere il segno + dagli attuali attributi android:id="@+id/header" nel TextView.

RelativeLayout, a partire da 1.6, supporta i riferimenti di inoltro ad altri widget, a condizione che la prima occorrenza del valore ID abbia il segno +.

5

Questo dovrebbe funzionare utilizzando 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> 

Edit: Android rimosso: l'orientamento come suggerito

+0

Android: l'orientamento è sbagliato qui credo – letroll