こんなクラスを使う。
キモは、onTouchEvent
、onInterceptTouchEvent
の両メソッドをオーバーライドしてタッチイベントを奪ってしまうこと
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;
}
}