RecyclerView のスクロール操作を検知する - Android Kotlin
メモ帳アプリ『CountablePad』に対する改善で、現在のスクロール位置に応じて見た目を変化させる(ヘッダをドロップシャドウさせる)デザインの検討を実施しました。
プログラミング
以下の記事で解説した NestedScrollView でのスクロール検知方法と同様の実装を行ったのですが、
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
recyclerView
.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
// TODO
}
}
このリスナー setOnScrollChangeListener は RecyclerView では全く機能しません。
リスナーの通知はスクロール操作毎に行われはしますが、パラメータが常に 0 であったり、異常な状態です。
NestedScrollView も RecyclerView も同じスクロールの機能だと思い込んでしまいますが、RecyclerView では全く異なった方法で実現しなければなりません。
解決
実現したのは以下の実装です。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?