概要
enterAlwaysCollapsedに設定されたAppBarLayoutとRecyclerViewで下方向にflingすると、
RecyclerViewの端でスクロールが止まってしまうときのWorkaroundです。
ソースコードはこちら https://github.com/cattaka/AndroidSnippets/pull/38
このWorkaroundはSupport Library 24.2.1にて動作確認しています。 将来Support Library側で修正される可能性があります。動画
Before
After
解説
RecyclerViewを下方向にflingしたとき、RecyclerViewがスクロールを始めます。
そしてRecyclerViewの端、つまり先頭までスクロールしたとき、スクロールは止まります。
現状のCoordinatorLayoutはこのときのイベントをハンドリングしていないため、そこで終わりになります。
このWorkaroundでは、RecyclerView.OnScrollListenerを利用して最後のスクロールイベントの速度を計測し、スクロールが終わったタイミングでAppBarLayoutにflingイベントを投げ直すことで対応しています。