在滑動的時候出現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就不會處理事件。