1. ホーム
  2. アンドロイド

[解決済み] [Solved] RecyclerViewのスクロールを無効にする方法は?

2022-03-31 21:36:32

質問

でスクロールを無効にすることができません。 RecyclerView . を呼び出してみました。 rv.setEnabled(false) が、まだスクロールできる。

スクロールを無効にするにはどうしたらいいですか?

解決方法を教えてください。

をオーバーライドする必要があります。 layoutManagerrecycleView を使用します。この方法では、スクロールだけが無効になり、他の機能は無効になりません。クリックやその他のタッチイベントは処理できます。たとえば、次のようになります。

オリジナルです。

public class CustomGridLayoutManager extends LinearLayoutManager {
    private boolean isScrollEnabled = true;

    public CustomGridLayoutManager(Context context) {
        super(context);
    }

    public void setScrollEnabled(boolean flag) {
        this.isScrollEnabled = flag;
    }

    @Override
    public boolean canScrollVertically() {
        //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
        return isScrollEnabled && super.canScrollVertically();
    }
}

ここで "isScrollEnabled" フラグを使用すると、リサイクルビューのスクロール機能を一時的に有効または無効にすることができます。

また

既存の実装を上書きして、スクロールを無効化し、クリックを許可するだけです。

linearLayoutManager = new LinearLayoutManager(context) {
    @Override
    public boolean canScrollVertically() {
        return false;
    }
};

Kotlinで。

object : LinearLayoutManager(this){ override fun canScrollVertically(): Boolean { return false } }