見出し画像

RecyclerView のスクロール操作を検知する - Android Kotlin

メモ帳アプリ『CountablePad』に対する改善で、現在のスクロール位置に応じて見た目を変化させる(ヘッダをドロップシャドウさせる)デザインの検討を実施しました。

画像1

CountablePad ハンバーガーメニュー

プログラミング

以下の記事で解説した NestedScrollView でのスクロール検知方法と同様の実装を行ったのですが、

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    recyclerView
        .setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
            // TODO
        }
}

このリスナー setOnScrollChangeListenerRecyclerView では全く機能しません。

リスナーの通知はスクロール操作毎に行われはしますが、パラメータが常に 0 であったり、異常な状態です。

NestedScrollViewRecyclerView も同じスクロールの機能だと思い込んでしまいますが、RecyclerView では全く異なった方法で実現しなければなりません。

解決

実現したのは以下の実装です。

ここから先は

384字
この記事のみ ¥ 120

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?