转载:https://blog.csdn.net/qq_33490141/article/details/82216285
重写onTouchEvent和onInterceptTouchEvent即可.
注意:这段代码并不是取消了滑动效果,只是拦截了滑动事件,不允许手指滑动,通过setCurrentItem切换时依旧有滑动的动画效果。
/**
* 自定义ViewPager,可动态设置是否支持滑动
* Created by monty on 2017/8/27.
*/
public class CustomViewPager extends ViewPager {
private boolean isCanScroll;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isCanScroll) {
//允许滑动则应该调用父类的方法
return super.onTouchEvent(ev);
} else {
//禁止滑动则不做任何操作,直接返回true即可
return true;
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (isCanScroll)
return super.onInterceptTouchEvent(arg0);
else
return false;
}
//设置是否允许滑动,true是可以滑动,false是禁止滑动
public void setIsCanScroll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
}