Как определить макет в Android - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть вопрос о том, как определить этот действительно простой макет:

Я бы хотел использовать Относительные макеты, но мне нужна высота B, чтобы заполнить всю высоту, которую оставляет A.

Я пытаюсь создать макет, который подходит для всех разрешений, поэтому я не могу указать px или dp в определении макета xml.

В идеале я не хочу использовать свойство содержимого wrap для высоты, потому что B - это ListView.

Есть ли какое-нибудь решение вообще?

Спасибо

Макет изображения

Ответы [ 5 ]

2 голосов
/ 02 декабря 2011

Здесь

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/holder_a"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </LinearLayout>

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/holder_a" >
    </ListView>
</RelativeLayout>
1 голос
/ 02 декабря 2011
<RelativeLayout >
  <A fixed height /> 
  <B layout_below=a fill_parent />
</RelativeLayout >
0 голосов
/ 02 декабря 2011
Use android:layout_weight

<LinearLayout 
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:weightSum="100"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <LinearLayout 
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:layout_weight="70" >

        </LinearLayout>
        <LinearLayout android:id="@+id/widget32" android:orientation="horizontal"
            android:layout_weight="30" android:layout_width="fill_parent"

            android:layout_height="wrap_content">

        </LinearLayout>
    </LinearLayout>
0 голосов
/ 02 декабря 2011

Это даст вам макет, который вы хотите:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
    <LinearLayout android:id="@+id/linearLayout1" android:layout_height="60dp" android:layout_width="fill_parent"></LinearLayout>
    <ListView android:id="@+id/listView1" android:layout_height="fill_parent" android:layout_width="fill_parent"></ListView>
</LinearLayout>

Вы можете заменить внутренний LinearLayout на что угодно.

0 голосов
/ 02 декабря 2011

«Я пытаюсь сделать макет, который подходит для всех разрешений»

Тогда вы должны сделать более одного XML-файла, иначе невозможно иметь 1 идеальный макет для всех устройств, за исключением того, что Высота A фиксирована

...