提问者:小点点

为什么我的水平 ViewPager2 中的垂直回收器视图无法滚动?


ViewPager2中的My RecyclerView不滚动。

view page 2的文档中有一节是关于嵌套的可滚动元素的,但是它是关于与view page 2具有相同方向的元素的。我在ViewPager2(水平)和RecyclerView(垂直)中有不同的取向。

如何使回收器视图滚动?我做错了什么?布局文件中的代码:

RecyclerView片段代码:

<layout 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">

     // ...

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/pieces_list"
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />

</layout>

包含ViewPager2的片段代码:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.google.android.material.tabs.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/tabs"
            style="@style/AppTabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"
            app:tabMaxWidth="0dp"
            app:tabMode="fixed"
            app:tabTextAppearance="@style/AppTabTextAppearance" />

        <androidx.viewpager2.widget.ViewPager2
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

我在片段代码中使用FragmentStateAdapterTabLayoutMediator连接它们,如果这很重要的话。


共1个答案

匿名用户

错误不在我的< code > recycle view 或< code > view page 2 设置中。我还使用了< code>AppBarLayout。我没有将< code > app:layout _ scroll flags = " scroll | enter always " 放在包含我的< code > view page 2 with < code > recycle view 的子布局上。但是< code>AppBarLayout的每个子元素都必须指定< code > app:layout _ scroll flags 才能使其可滚动。

此外,ViewPager2RecyclerView 不应该是 AppBarLayout 的子级,而应该是 AppBarLayout 标签的正下方。我将它们移出 AppBarLayout,现在一切都按预期工作。