Android-макет XML, как заполнить контент на весь экран, сохраняя нижний колонтитул в целости и сохранности? - PullRequest
2 голосов
/ 26 марта 2012

У меня есть 3 основных элемента в моем макете XML (также см. Изображение):

  1. Заголовок, linearLayout (ничего интересного здесь)
  2. Содержимое ,lativeLayout,там есть изображение, которое я центрировал как по горизонтали, так и по вертикали.
  3. Нижний колонтитул, linearLayout

My current setup

Как мне нужно, чтобы это выгляделовыглядит следующим образом:

  • Нижний колонтитул (3) должен быть выровнен по нижнему краю, чтобы не осталось пробелов
  • Содержимое (2) должно заполнить пространство междуверхний колонтитул (1) и нижний колонтитул (3), поэтому изображение всегда центрируется точно между двумя элементами.

Что я пробовал:

  • Настройка содержимого (2) заполнять по вертикали, но он игнорирует нижний колонтитул (3), поэтому он перекрывает нижний колонтитул, так что он больше не виден.
  • Я также попытался поместить нижний колонтитул (3) в другой LinearLayout, который заполняет нижнюю часть, а затем, используя атрибут гравитации, я выровнял нижний колонтитул (3) по дну, этоoks идеально подходит для нижнего колонтитула (3), но content (2) сохраняет свой размер (как показано на рисунке), поскольку нижний колонтитул (3) уже заполняет пространство под ним.

Может кто-нибудь помочьмне с настройкой правильного макета?

Напомним: нижний колонтитул (3) должен быть выровнен по низу (без пробелов), верхний колонтитул (1) должен быть вверху, а все пространство между ними должно быть заполнено содержимым(2) часть, чтобы центрирование изображения выглядело правильно.

Я могу предоставить свой текущий код XML-Layout, если необходимо.

Ответы [ 2 ]

4 голосов
/ 26 марта 2012

Используйте макет RelativeLayout, как этот

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layotu"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/footer"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/footer"
        android:layout_below="@id/header"
        android:layout_centerInParent="true" >
    </RelativeLayout>

</RelativeLayout>
2 голосов
/ 26 марта 2012

Попробуйте вот так ..

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >

    </LinearLayout>

    <RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/linearLayout1" >

    </RelativeLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/relativeLayout2"
        android:layout_alignParentBottom="true"
        android:orientation="vertical" >

    </LinearLayout>

</RelativeLayout>

создайте относительный макет как родительский макет всех 3 других макетов и поместите

android:layout_below="@+id/relativeLayout2"
        android:layout_alignParentBottom="true"

в последний линейный макет

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