CollapsingToolbarLayout 在 RecyclerView 滚动时不一致地折叠
CollapsingToolbarLayout collapses inconsistently on RecyclerView scroll
在将 CollapsingToolBarLayout 与 RecyclerView 一起使用时,我发现滚动时工具栏折叠不一致。在任何东西崩溃之前,我可以在回收站视图中滚动大约一半,然后它会断断续续地崩溃。这种行为并不总是一致的——有时它会比其他人更崩溃。然而,当我滚动到底部时,它总是完全折叠。我的 XML 如下所示:
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" >
<com.google.android.material.appbar.MaterialToolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
事实证明,最终的问题是在第一个 RecyclerView 的某些视图持有者中有第二个 RecyclerView。根据 this answer,在内部 RecyclerView 上设置 setNestedScrollingEnabled(false)
会导致事情按预期运行。
在将 CollapsingToolBarLayout 与 RecyclerView 一起使用时,我发现滚动时工具栏折叠不一致。在任何东西崩溃之前,我可以在回收站视图中滚动大约一半,然后它会断断续续地崩溃。这种行为并不总是一致的——有时它会比其他人更崩溃。然而,当我滚动到底部时,它总是完全折叠。我的 XML 如下所示:
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" >
<com.google.android.material.appbar.MaterialToolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
事实证明,最终的问题是在第一个 RecyclerView 的某些视图持有者中有第二个 RecyclerView。根据 this answer,在内部 RecyclerView 上设置 setNestedScrollingEnabled(false)
会导致事情按预期运行。