首先,查看页面布局
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/layoutCoordinator"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="76dp"
android:layout_marginBottom="6dp"
app:layout_constraintBottom_toTopOf="@id/tvNext"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
app:elevation="0dp"
app:layout_behavior="com.fz.lib.ui.view.FlingBehavior">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">
... (省略)
分析,控制滑动的代码为
app:layout_scrollFlags="scroll|exitUntilCollapsed"
第一步
只要修改
app:layout_scrollFlags="noScroll"
但是这么改,很不灵活。所以需要在代码中进行改动。
第二步
if (禁止滑动) {
AppBarLayout.LayoutParams layoutParams = (AppBarLayout.LayoutParams) mBinding.collapsingToolbar.getLayoutParams();
layoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
mBinding.collapsingToolbar.setLayoutParams(layoutParams);
} else {
AppBarLayout.LayoutParams layoutParams = (AppBarLayout.LayoutParams) mBinding.collapsingToolbar.getLayoutParams();
layoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
mBinding.collapsingToolbar.setLayoutParams(layoutParams);
}
大功告成