Как разместить виджеты выше и ниже списка? - PullRequest
6 голосов
/ 16 марта 2010

У меня есть представление списка, и я хочу разместить его как над (по оси 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);

    }
}

Ответы [ 4 ]

10 голосов
/ 17 марта 2010

Мне не удалось заставить относительную компоновку работать в 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>
5 голосов
/ 05 октября 2011

Это должно работать с использованием 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>

Редактировать : удален android: ориентация в соответствии с предложением

2 голосов
/ 16 марта 2010

Если вы нацелены на 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, поддерживает прямые ссылки на другие виджеты, если первое вхождение значения идентификатора имеет знак +.

0 голосов
/ 18 мая 2014

Вам просто нужно поместить вес 1 в список внутри линейного макета, другие текстовые представления / кнопки / и т.д. не должны иметь никакого значения веса.

Вот пример: https://bitbucket.org/generalplus/android_development/src/5a892efb0551/samples/ApiDemos/res/layout/linear_layout_9.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...