最近做项目要求某种情况下ViewPager不能滑动,在网上找了一圈。有说重写Ontouch的,各种。都试了试,基本都不可用。
自己看ViewPager源码,知道VIewPager移动全部都调用了scrollTo方法,这个是View的方法,那么我们只需要重写这个方法就可以禁止ViewPager滑动
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
/**
* 自定义可以设置左右滑动的ViewPager
* Created by willkong on 2016/12/17.
*/
public class IsScrollbleViewPager extends ViewPager{
private boolean scrollble = true;
public IsScrollbleViewPager(Context context) {
super(context);
}
public IsScrollbleViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public boolean isScrollble() {
return scrollble;
}
public void setScrollble(boolean scrollble) {
this.scrollble = scrollble;
}
//方法1.重写scrollTo,这个会影响部分方法的使用
@Override
public void scrollTo(int x, int y){
if (scrollble){
super.scrollTo(x, y);
}
}
//方法2.重写onTouchEvent方法。
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!scrollble) {
return true;
}
return super.onTouchEvent(ev);
}
}
这样就可以动态的设置是否可以左右滑动。默认是可以滑动的。