如何在不使用NestedScrollView的情况下滚动ListView?

时间:2019-12-17 03:28:53

标签: android listview android-listview android-scrollview android-nestedscrollview

这个问题过去可能至少被问过十二遍。看过以前的回复,但似乎仍然无法正常工作

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/colors_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

我确实有一个不希望使用的解决方案,因为被告知由于NestedScrollView本身是可滚动的,因此不需要使用ListView。但是,如果我单独使用ListView,我似乎无法滚动它。为什么?

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/layout_background_color">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize"
    android:orientation="vertical">

    <ListView
        android:id="@+id/colors_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

</android.support.v4.widget.NestedScrollView>

2 个答案:

答案 0 :(得分:2)

我猜这里最大的问题是您将ListView设置为android:layout_height="wrap_content",由于其高度总是随子级而增加,因此它无法滚动。

尝试使用android:layout_height="match_parent"。 (魔术发生了!)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize"
    android:orientation="vertical">

    <ListView
        android:id="@+id/colors_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

答案 1 :(得分:0)

您的嵌套滚动视图始终按listview向下滚动。用scrollview包装listview或recyclerview是不好的方法,您的ui可能很重。尝试使用诸如recyclerview多视图持有者之类的另一种方法,以更好地构建具有列表的滚动UI