在滑动的时候出现TabLayout还没到顶部的时候RecyclerView就会滑动的情况。
分析原因,RecyclerView快速滑动是在onTouchEvent的ACTION_UP里面调用fling。
fling方法里调dispatchNestedPreFling,如果它返回false,就快速滚动。dispatchNestedPreFling调用CoordinatorLayout的onNestedPreFling方法,返回布尔对象handled。如果handled为true,就表明CoordinatorLayout来处理事件,RecyclerView不处理。
onNestedPreFling遍历child的Behavior的onNestedPreFling方法,并把结果取或,就是说只要有一个返回true,handled就为true。
查看AppBarHeaderBehavior的onNestedPreFling,让滑动距离小于AppBarLayout.getTotalScrollRange的时候返回true,这样在没有滑动到顶部之前RecyclerView就不会处理事件。