ListView игнорирует wrap_content

У меня проблема с ListView в Android. Когда я устанавливаю android:layout_height="wrap_content", ListView остается длиной всего в одну или две строки, и я не могу найти способ сделать его «обернутым».

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:gravity="center">
            <TextView
                android:id="@+id/question" 
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content" />
            <ListView android:id="@+id/ListView01"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>
</FrameLayout>

Есть ли способ сделать это? Заранее спасибо!


person Czechnology    schedule 29.11.2010    source источник
comment
есть ли какая-то конкретная причина, по которой вы используете так много оберток вокруг вашего ListView?   -  person Tivie    schedule 29.11.2010
comment
Что ж, ScrollView может содержать только одного дочернего элемента, поэтому LinearLayout содержит TextView и ListView. FrameLayout может быть ненужным. Так есть ли лучший способ воспроизвести внешний вид ListView? Я видел некоторые идеи с заполнением LinearLayout элементами списка, но описание было не очень описательным.   -  person Czechnology    schedule 29.11.2010


Ответы (3)


Похоже, вы пытаетесь добавить заголовок в свой список. Listview имеет встроенную поддержку верхних (и нижних колонтитулов). Метод установки заголовка — listview.addHeader(View view). Вы можете настроить заголовок по мере необходимости.

person Patrick    schedule 01.08.2012
comment
Это явно не ответ на заданный вопрос. Фактический вопрос хочет знать, как заставить ListView растягиваться по высоте, чтобы соответствовать количеству содержащихся в нем элементов. - person Phil Wright; 14.09.2017

Вы никогда не должны устанавливать высоту ListView в wrap_content. Либо установите высоту fill_parent, либо сделайте что-то вроде этого:

<ListView
    android:layout_height="0dp"
    android:layout_weight="1"
    />

Источник: http://www.youtube.com/watch?v=wDBM6wVEO70&t=40m45s.

person bmaupin    schedule 28.09.2011

используйте ExpandableHeightGridView.java из gitHub ExpandableHeightGridView Попробуйте для прокрутки

person Arth Tilva    schedule 02.03.2015