2010-03-16 3 views
6

У меня есть вид списка и вы хотите разместить вещи как сверху (по оси y), так и ниже (ось 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> 

Вот соответствующий класс активность:

public class SampleListActivity extends Activity { 

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

    } 
} 

ответ

9

Я не мог получить относительный макет для работы в Android 1.5, но я получил Linear Layout для работы. Ниже мое решение:

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

Если вы настроитесь на Android 1.6 и выше, добавьте android:layout_below="@id/header" к вашим существующим атрибутам на ListView.

Если вы все еще ориентации Android 1.5, вам нужно будет сделать это android:layout_below="@+id/header" и, возможно, удалить + знак из текущего android:id="@+id/header" атрибута в TextView.

RelativeLayout, начиная с версии 1.6, поддерживает прямые ссылки на другие виджеты, при условии, что первое вхождение значения ID имеет знак +.

5

Это должно работать, используя 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: удален андроида: ориентация как предложено

+0

андроида: ориентация здесь не так, я думаю, – letroll

Смежные вопросы