在垂直 RecyclerView 内的水平 RecyclerView 上垂直滚动时,AppBarLayout 不会 collapse/expand

AppBarLayout does not collapse/expand when scrolling vertically over horizontal RecyclerView inside vertical RecyclerView

当垂直 RecyclerView 有一个水平 RecyclerView 时,如果用户开始用手指在水平 RecyclerView 上垂直滚动,则 AppBarLayout 根本不会移动。如果手指在其他列表项上,则 AppBarLayout 会更改其状态。

CollapsibleToolbar 的代码取自 this 文章。

AppBarLayout 中的 CollapsingToolbarLayout 问题仍然存在。

我的代码有问题还是库错误?

<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="76dp"
        android:theme="@style/AppTheme.AppBarOverlay.Light">

        <com.example.notcollapsingappbar.CollapsibleToolbar
            android:id="@+id/motion_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:minHeight="@dimen/actionBarSize"
            app:layoutDescription="@xml/scene_header"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

            <TextView
                android:id="@+id/toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="start|center_vertical"
                android:text="Large title"
                android:textColor="@android:color/white"
                android:textSize="30sp"
                app:autoSizeTextType="uniform" />

        </com.example.notcollapsingappbar.CollapsibleToolbar>

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:paddingBottom="16dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

您可以将此行添加到水平线 RecyclerView

android:nestedScrollingEnabled="false"

或以编程方式:

recyclerView.setNestedScrollingEnabled(false);

@potados 的回答解决了这个问题。但没有解释为什么它有效。

我用同样的问题创建了一个 issue on GitHub page of material components android。我想 post 我在那里收到的答案。

try to set nestedScrollEnable of Horizontal RecyclerView to false

If NestedScrollingChild as a child View is enabled, NestedScrollingParent as a parent layout will not intercept scrolling events