在滑動(dòng)的時(shí)候出現(xiàn)TabLayout還沒到頂部的時(shí)候RecyclerView就會(huì)滑動(dòng)的情況蜡饵。
分析原因蝇裤,RecyclerView快速滑動(dòng)是在onTouchEvent的ACTION_UP里面調(diào)用fling婉徘。
fling方法里調(diào)dispatchNestedPreFling盯腌,如果它返回false募逞,就快速滾動(dòng)猖腕。dispatchNestedPreFling調(diào)用CoordinatorLayout的onNestedPreFling方法,返回布爾對(duì)象handled硼瓣。如果handled為true究飞,就表明CoordinatorLayout來處理事件,RecyclerView不處理堂鲤。
onNestedPreFling遍歷child的Behavior的onNestedPreFling方法亿傅,并把結(jié)果取或,就是說只要有一個(gè)返回true瘟栖,handled就為true葵擎。
查看AppBarHeaderBehavior的onNestedPreFling,讓滑動(dòng)距離小于AppBarLayout.getTotalScrollRange的時(shí)候返回true半哟,這樣在沒有滑動(dòng)到頂部之前RecyclerView就不會(huì)處理事件坪蚁。