大家都知道,Viewpager这个控件的特点:可滑动,可通过Adapter设置每一页的数据,这些数据可以是继承View的任何控件。
ViewPager之所以可以拥有很多页面,是因为它集成了ViewGroup。
当然ViewPager的每一页也可以是一个ViewPager,这样的嵌套会使得滑动事件不能很好的处理,导致一系列不正常的现象。
有时候我们需要禁止某一个ViewPager的滑动事件,来让其他的控件得到事件,此时就需要来自定义一个ViewPager,其实很简单。
public class NoScrollViewpager extends ViewPager {
//构造方法,使用父亲的
public NoScrollViewpager(Context context) {
super(context);
}
//构造方法,使用父亲的
public NoScrollViewpager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 中断 滑动事件
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
我们只需要 继承ViewPager ,重写 onInterceptTouchEvent 方法。
这个方法:中断滑动事件,
如果return false:就代表,这个时间不拦截,将时间交给其子类,所以里层的孩子就可以拿到事件,从而做处理。
如果return true: 就代表,自己需要吃掉这个事件,自己需要处理,所以就会滑动,有能力可以看看父类的实现(也就是不重写,默认使用父类的实现)。