滚动 AppBarLayout 内部的 RecyclerView 在滚动外部 RecycleView 时禁用滚动滞后
Scrolling RecycleView that is inside AppBarLayout disables scrollFlag when scrolling outer RecycleView
虽然我没有触及内部 RecycleView,但滚动外部 RecycleView 会根据需要移动内容,但是在我滚动内部 RecycleView 然后尝试滚动外部 RecycleView 后,上层内容不会移动,只有外部 RecycleView 滚动。 HorizontalRecycleView 只是一个自定义的水平 RecycleView。
这是一个简化的布局 -
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:clickable="true">
<android.support.v7.widget.RecyclerView //outer RecyclerView
android:id="@+id/bottom_recycle_view"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
...
<com.app.opticsplanet.views.recycleview.HorizontalRecycleView //inner RecyclerView
android:id="@+id/top_recycle_view"
android:layout_width="match_parent"
android:layout_height="@dimen/brand_row_height"
android:clipToPadding="false"
android:paddingLeft="@dimen/default_margin" />
...
</android.support.design.widget.AppBarLayout>
我找到了答案。对于内部 RecyclerView,不应该影响内容滚动,你应该设置 -
mInnerRecycleView.setNestedScrollingEnabled(false);
虽然我没有触及内部 RecycleView,但滚动外部 RecycleView 会根据需要移动内容,但是在我滚动内部 RecycleView 然后尝试滚动外部 RecycleView 后,上层内容不会移动,只有外部 RecycleView 滚动。 HorizontalRecycleView 只是一个自定义的水平 RecycleView。
这是一个简化的布局 -
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:clickable="true">
<android.support.v7.widget.RecyclerView //outer RecyclerView
android:id="@+id/bottom_recycle_view"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
...
<com.app.opticsplanet.views.recycleview.HorizontalRecycleView //inner RecyclerView
android:id="@+id/top_recycle_view"
android:layout_width="match_parent"
android:layout_height="@dimen/brand_row_height"
android:clipToPadding="false"
android:paddingLeft="@dimen/default_margin" />
...
</android.support.design.widget.AppBarLayout>
我找到了答案。对于内部 RecyclerView,不应该影响内容滚动,你应该设置 -
mInnerRecycleView.setNestedScrollingEnabled(false);