Запрещение Android ListView занимать почти всю высоту экрана - PullRequest
2 голосов
/ 01 марта 2011

Я пытаюсь настроить действие в Android, которое имеет 50% высоты экрана для ScrollView и остальные 50% для ListView.

Для этого я установил вес каждого на «1».

Как это:

<LinearLayout android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="10dip">


    <ScrollView android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1">

        <TableLayout android:id="@+id/my_table"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="0">

            <TableRow android:padding="5dip"
        android:id="@+id/fault_heading"
        android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <TextView android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        android:text="@string/table_title"
        android:paddingRight="20dip"/>

            </TableRow>
            <!-- More rows are added at run time. -->

        </TableLayout>

    </ScrollView>

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

</LinearLayout>

Когда и ScrollView, и ListView имеют слишком много контента для отображения без прокрутки, это прекрасно работает.

Когда ScrollView требуется только 20% экрана, а ListView требуется 70%, ListView увеличивается до 70%, поэтому он может отображаться без прокрутки. Это не то, что я ожидал, но это хорошо.

Проблема, с которой я столкнулся, заключается в том, что ListView имеет так много данных, что для отображения необходим весь экран И просмотр Scroll только с 1 или 2 строками данных. В этом случае ListView увеличивается почти до полной высоты и оставляет пространство, эквивалентное примерно одной строке текста для представления с прокруткой.

Кажется, я не могу понять, как зарезервировать определенную часть экрана для ScrollView, независимо от размера ListView.

Объем пространства, которое ScrollView может захватить, кажется прямо пропорциональным количеству строк в его дочерней таблице. Когда это только 1, представление прокрутки имеет только около половины см в высоту.

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

Как насчет изменения android:layout_height на минимальное значение вместо 0dip?

ОБНОВЛЕНО: В соответствии с комментариями ниже, решением было установить для внешнего LinearLayout высоту "fill_parent"

1 голос
/ 20 августа 2015

Используйте эти параметры в разделе ListView

 android:layout_height="0dp" 
 android:layout_weight="1"
...