Вам нужно создать свой собственный класс, который расширяет ViewPager:
public class ViewPagerExample extends ViewPager {
private boolean enabled;
private ViewPagerAdapter adapter;
public ViewPagerExample(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
changePagerScroller();
}
@Override
public void setAdapter(@Nullable PagerAdapter adapter) {
super.setAdapter(adapter);
this.adapter = (ViewPagerAdapter) adapter;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
private void changePagerScroller() {
try {
Field mScroller = null;
mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
ViewPagerScroller scroller = new ViewPagerScroller(this.getContext());
mScroller.set(this, scroller);
} catch (Exception e) {
Log.e(this.getClass().getSimpleName(), "error of change scroller ", e);
}
}
private class ViewPagerScroller extends Scroller {
private int mScrollDuration = 1000;
ViewPagerScroller(Context context) {
super(context);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, mScrollDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
super.startScroll(startX, startY, dx, dy, mScrollDuration);
}
}
}