另一个RecyclerView中的RecyclerView不滚动

时间:2019-06-14 15:08:15

标签: android android-recyclerview

我的情况很简单。我有一个RecyclerView,里面还有其他几个RecyclerViews。当我尝试滚动内部RecyclerView时,它们不会滚动。

这是为什么?有解决方法吗?

带有根RecyclerView的根XML:

<?xml version="1.0" encoding="utf-8"?>
<com.boxed.v2.ui.category.SortAndFilterView android:id="@+id/sortfilterview"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?actionBarSize"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical"
    android:elevation="3dp"
    app:contentViewId="@+id/content"
    app:progressViewId="@+id/progressbar"
    app:secondaryViewId="@+id/error">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:layout_marginTop="55dp"
        android:paddingTop="10dp"
        android:clickable="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/bright_teal"
            android:text="Sort &amp; Filters"
            android:paddingLeft="12dp"
            app:fontName="@string/font_sofia_medium"
            android:textAllCaps="false"
            android:textSize="24sp"
            />

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:id="@+id/recycler_view"
            android:background="@color/white"
            android:orientation="vertical"
            android:layout_margin="10dp"
            ></android.support.v7.widget.RecyclerView>

    </LinearLayout>

</com.boxed.v2.ui.category.SortAndFilterView>

然后,包含嵌套RecyclerView的嵌套项视图(根RecyclerView中的每行之一):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@drawable/textlines"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:height="55dp"
        android:layout_height="wrap_content"
        app:fontName="@string/font_sofia_medium"
        android:textAllCaps="false"
        android:gravity="center_vertical"
        android:paddingLeft="5dp"
        android:textSize="18sp" />

    <LinearLayout
        android:id="@+id/collapsable_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:orientation="vertical">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/embedded_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="190dp"
            android:background="@drawable/textlines"
            ></android.support.v7.widget.RecyclerView>

    </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

LayoutManager混淆了要滚动的视图, 要使内部RV滚动,请执行此操作。

在顶级RV内创建NestedScrollView

然后在NestedScrollView内放入第二个RV

NB RV = recyvlerView

答案 1 :(得分:0)

要使RecyclerView滚动,必须满足以下两个条件之一:

  • RecyclerView的高度小于其所有项目

  • RecyclerView位于滚动父级内部

    在这种情况下,Embedded_recycler_view的高度必须小于collapsable_content(您使用match_parent,这是错误的),或者您在collapsable_content内添加了另一个滚动视图,然后添加了Embedded_recycle

然后 将setHasFixedSize设置为true,并为孩子设置setRecycledViewPool