Итак, я разрабатываю экран, на котором есть некоторые изображения и кнопки сверху, а ниже - список, в котором отображается список некоторых действий.
Дизайн выглядит примерно так:
![design]()
Теперь на меньшем экране высота ListView становится очень маленькой, так как пространство экрана занято выше значками и изображениями.
Итак, как я могу увеличить высоту Linearlayout или ListView, чтобы пользователь мог прокрутить список до остальных элементов ListView.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
.... Other Layouts .....
<ListView
android:id="@+id/listArea"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:paddingLeft="@dimen/list_padding"
android:paddingRight="@dimen/list_padding" />
</LinearLayout>
Изменить: Пробовал использовать верхний вид в качестве заголовка в List, но так как я тоже хочу EmptyView, это создает проблему, поскольку она заменяет весь заголовок + listview
Ответ 1
Из того, что я прочитал об этой проблеме, вы должны указать "Представления сверху" как заголовок списка, и прокрутите его правильно.
Afaik это работает только в том случае, если список не пуст, поскольку пустой вид заменяет весь список, включая заголовки.
Ответ 2
Вы можете использовать weightSum и layout_weight, чтобы определить, сколько из родительского доступного пространства займет дочернее представление. Чтобы использовать их, родительский макет, например LinearLayout, получает атрибут android:weightSum
. Каждый дочерний макет получает атрибут android:layout_weight
, где сумма всех весов для детей представляет собой weightSum родителя. Кроме того, у каждого ребенка должен быть установлен layout_height
или layout_width
на 0dp
, в зависимости от того, что будет определено весом.
Вот пример, основанный на вашей диаграмме. Скажем, вы хотите, чтобы два верхних вида занимали 1/4 экрана каждый, а ListView
- нижнюю половину. Добавьте android:weightSum="4"
к вашим LinearLayout
, android:layout_weight="1"
к двум дочерним макетам, которые вы представляете с помощью ...Other Layouts...
и android:layout_weight="2"
, к ListView
. Код может выглядеть примерно так:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="4">
<ImageView
android:layout_weight="1"
android:layout_height="0dp"
...some other attributes.../>
<LinearLayout
android:layout_weight="1"
android:layout_height="0dp"
android:orientation="horizontal"
...some other attributes...>
...some children of the LinearLayout...
</LinearLayout>
<ListView
android:id="@+id/listArea"
android:layout_width="match_parent"
android:layout_height="0dp"
android:paddingLeft="@dimen/list_padding"
android:paddingRight="@dimen/list_padding"
android:layout_weight="2"/>
</LinearLayout>