ListView отображает только один элемент, если не указана высота - PullRequest
0 голосов
/ 24 мая 2018

У меня есть контекстное меню с элементами в ListView, все они содержатся в BottomSheet из библиотеки ASL / Design.Корневое представление действия - CoordinatorLayout, как указано BottomSheetBehavior.

Проблема, с которой я сталкиваюсь, заключается в том, что ListView (R.id.problematic_list ниже) визуализирует первый элемент списка, только если высота списка-контейнера-контейнера равна либо wrap_content, либо даже match_parent (R.id.list_container ниже).Если этот контейнер списка имеет большой набор высоты (например, 400dp), тогда полный список отображается как ожидается;наряду с дополнительным пространством (так как высота слишком указана).ListView заполняется динамически, поэтому я не могу установить статическую высоту в файле layout-xml.

Существует ли простой макет, атрибут или программный обходной путь, позволяющий ListView одновременно заполнять и отображать без-выделение вертикального пространства?

Моя начальная конфигурация такая, как описано здесь

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:fitsSystemWindows="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/primaryBlue"
        android:orientation="vertical"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:fitsSystemWindows="true">

        <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"_elevation" />

        <!-- main activity content -->
        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/toolbar"
            />
    </RelativeLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipToPadding="true"
        android:layout_gravity="bottom"
        app:behavior_hideable="true"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <!-- layout_height= 300dp / wrap_content -->
        <LinearLayout
            android:id="@+id/list_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ListView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/problematic_list"
                />
            </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

1 Ответ

0 голосов
/ 24 мая 2018

NestedScrollView имеет свой собственный набор требований к высоте для полной визуализации.Я удалил его из иерархии, и список отображается во всем доступном пространстве.

спасибо @CoderP за подсказку

...