본문 바로가기

나의 플랫폼/안드로이드

[Android] Viewpager swipe disable

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

ViewPager에 Touch로 인한 Page 이동을 막고자 할 때 아래와 같이 Custom한 ViewPager를 사용 하세요.


package com.namuon.ringq.widget.viewpager;

import android.content.Context;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class SwipeViewPager extends ViewPager {
private boolean enabled;

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

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

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (enabled) {
return super.onInterceptTouchEvent(ev);
} else {
if (MotionEventCompat.getActionMasked(ev) == MotionEvent.ACTION_MOVE) {
// ignore move action
} else {
if (super.onInterceptTouchEvent(ev)) {
super.onTouchEvent(ev);
}
}
return false;
}
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
if (enabled) {
return super.onTouchEvent(ev);
} else {
return MotionEventCompat.getActionMasked(ev) != MotionEvent.ACTION_MOVE && super.onTouchEvent(ev);
}
}

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

참고 : http://stackoverflow.com/a/36614266/3534559


setPagingEnabled 에 false를 주게 되면 Touch로 인한 paging을 막을 수 있습니다.

참고 하세요.