Как определить расположение в пространстве все 50/50?

1

У меня вертикальная линейная компоновка с двумя ListView. Я хочу, чтобы верхний ListView занимал 50% экрана. Я хочу, чтобы нижняя часть списка заняла 50% экрана. Как это сделать в XML?

Теги:
android-linearlayout

2 ответа

10
Лучший ответ

Следующий макет должен работать

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

    <ListView
        android:id="@+id/list1"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

    <ListView
        android:id="@+id/list2"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

</LinearLayout>

Как это работает:

  • Изначально оба списка не имеют высоты
  • После измерения всего с высотой оставшаяся высота (в этом случае все это, поскольку нет других видов с заданной высотой или wrap_content), разделяется между всеми видами без высоты и a layout_weight
  • Высота каждого представления будет (layout_weight of View) / (Sum of layout_weights in parent ViewGroup)
  • В этом случае (Sum of layout_weights in parent ViewGroup) = 2 и (layout_weight of View) = 1 для каждого ListView, поэтому каждый ListView занимает 1/2 доступного пространства
2

Установите Vertical LinearLayout на height:fill_parent, а затем установите weight of each ListView to "1" e.g. android:layout_weight="1"

  • 2
    Это не работает правильно. Вес определяет, как распределяется дополнительное пространство. Содержание будет 50/50, только если они изначально имеют одинаковый размер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню