제가 사용하고 있는 코드인데요
public class FreezableViewPager extends ViewPager {
public boolean melted;
public FreezableViewPager(Context context) {
super(context);
freeze();
}
public FreezableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
freeze();
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
try {
if (melted) {
return super.onTouchEvent(event);
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (melted) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void freeze() {
melted = false;
}
public void melt() {
melted = true;
}
}
로 custom viewpager 를 만드시고
setOnPageChangeListener 에 onPageSelected 에
swipe 를 막고 싶은 페이지에서
public void onPageSelected(int position) {
if (position == NO_SWIPE_PAGE) {
viewPager.freeze();
} else {
viewPager.melt();
}
}
정도로 하시면 되겠네요