1. ホーム
  2. android

[解決済み] ViewPagerのスクロールを無効にすることは可能ですか?

2022-04-29 01:59:03

質問

私は ViewPager をインスタンス化したものです。 View . 検索結果がビューに返される間、ビューページャーのスクロールと子ボタンの両方を一瞬だけ無効にしたいと思います。私は viewPager.setEnabled(false) が、これでは無効化されません。

どなたか思い当たる方はいらっしゃいますか?

解決方法は?

のサブクラスを作成することで、簡単に解決できます。 ViewPager を持つ private boolean のフラグを立てます。 isPagingEnabled . そして onTouchEventonInterceptTouchEvent メソッドを使用します。もし isPagingEnabled が真であれば super メソッドを使用し、それ以外の場合は return .

public class CustomViewPager extends ViewPager {

    private boolean isPagingEnabled = true;

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

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return this.isPagingEnabled && super.onTouchEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        return this.isPagingEnabled && super.onInterceptTouchEvent(event);
    }

    public void setPagingEnabled(boolean b) {
        this.isPagingEnabled = b;
    }
}

そして Layout.XML ファイルは <com.android.support.V4.ViewPager> タグを <com.yourpackage.CustomViewPager> タグを使用します。

このコードは、以下のものを流用しました。 ブログ記事 .