
picture.png
問題描述:
首先我的布局是這樣的,在NestedScrollView里面存在三個RecyclerView,然后使用折疊布局后,滑動上面的兩個RecyclerView頂部不會折疊。
解決辦法:

image.png
為不可折疊區(qū)域的RecyclerView設(shè)置 setNestedScrollingEnabled(false);
問題分析:
在事件分發(fā)模型中,手指down、move、up整個滑動過程,一旦有View決定攔截這個事件,那么整個事件過程都交由它來處理,其他View沒有機會再處理了。
新的嵌套滑動機制增加支持子View和父View共同處理滑動事件的能力,子View處理事件的時候,能通知父View同時處理。
CoordinatorLayout實現(xiàn)了NestedScrollingParent,縱向RecyclerView是CoordinatorLayout的子View,RecyclerView的滑動能通知到CoordinatorLayout,繼而由CoordinatorLayout協(xié)調(diào)讓CollapsingToolbarLayout發(fā)生折疊。
上面出bug的原因也能理解了,橫向RecyclerView的父View是縱向NestedScrollView,而NestedScrollView只實現(xiàn)了NestedScrollingChild,無法像CoordinatorLayout一樣響應(yīng)。所以要關(guān)閉橫向RecyclerView的嵌套滑動功能,讓橫向RecyclerView如同其他嵌入NestedScrollView的view一樣,觸發(fā)折疊。