お題
選択中のタブをもう一度タップした場合などに先頭にスクロールさせたい。
RecyclerViewにはアニメーション無しのscrollToPositionとアニメーション付きのsmoothScrollToPositionが
あるのでスクロール状態に応じて使い分けたい。
対応
対象の画面が縦スクロールするとして、RecyclerViewがどの程度スクロールしたかを見るのにscrollYだと常に
0が返ってきてしまうので、computeVerticalScrollOffsetを使う。
recyclerView?.let { if (it.computeVerticalScrollOffset() > 5000) { it.scrollToPosition(0) } else { it.smoothScrollToPosition(0) } }
offsetをどのくらいにするかは実際に触ってみつつお好みで。