自定义不可滑动的Viewpager

大家都知道,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:     就代表,自己需要吃掉这个事件,自己需要处理,所以就会滑动,有能力可以看看父类的实现(也就是不重写,默认使用父类的实现)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值