Я имею представление списка и хочу поместить материал оба выше (на оси y) и ниже (оси y) это включая изображения, текстовые представления и строку кнопок. Ниже упрощенная версия того, что я создаю. К сожалению, покрытия списка (т.е. выше на оси z) заголовок так текст заголовка не видимы вместо того, чтобы быть внизу (на оси 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);
}
}
Мне не удалось заставить относительную компоновку работать в 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>
Если вы ориентируетесь на 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 имеет знак +
.