Posted at

ViewPagerのスワイプを抑止する方法

More than 1 year has passed since last update.

こんなクラスを使う。

キモは、onTouchEventonInterceptTouchEventの両メソッドをオーバーライドしてタッチイベントを奪ってしまうこと

public class SwipeControlViewPager extends ViewPager {

protected boolean enableSwipe = true;

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

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

public void setSwipeEnable(boolean enable) {
this.enableSwipe = enable;
}

public void toggleSwipeEnable() {
this.enableSwipe = !this.enableSwipe;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (enableSwipe) {
return super.onInterceptTouchEvent(ev);
}
return false;
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
if (enableSwipe) {
return super.onTouchEvent(ev);
}
return false;
}
}