前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

先頭にスクロールさせる

お題

選択中のタブをもう一度タップした場合などに先頭にスクロールさせたい。
RecyclerViewにはアニメーション無しのscrollToPositionとアニメーション付きのsmoothScrollToPositionが
あるのでスクロール状態に応じて使い分けたい。

対応

対象の画面が縦スクロールするとして、RecyclerViewがどの程度スクロールしたかを見るのにscrollYだと常に
0が返ってきてしまうので、computeVerticalScrollOffsetを使う。

recyclerView?.let {
    if (it.computeVerticalScrollOffset() > 5000) {
        it.scrollToPosition(0)
    } else {
        it.smoothScrollToPosition(0)
    }
}

offsetをどのくらいにするかは実際に触ってみつつお好みで。