其实viewPager的跟随手指滑动式他的一大特点之一,解决了我们很多问题,可是在某些特殊的地方,我们是不想让他跟随手指滑动的,其实实现的步骤很简单,一句代码的事
我们知道dispatchTouchEvent()这是屏幕触摸事件的分发器,他的返回值是boolean类型,如果他的返回值是true,那么说明本次触摸事件被消费掉了,会传进来一个新的触摸事件。如果是false,那么说明没有被消费掉,就不会换入一个新的事件。
先看一下源码中的返回值
1
2
3
4
5
|
@Override
public
boolean
dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
return
super
.dispatchTouchEvent(ev);
}
|
其实不管是那一层,只要返回值改成true,就都不会执行触摸事件了。
onTouchEvent();onIntercepTouchEnent();onTouchEventListener里面的onTouch方法,这里面的返回值改成true
三个都可以解决这个问题。
本人验证了下,在onTouchEvent(),dispatchTouchEvent,里面返回true是可以禁止viewpager的滑动,
但是仅仅在OnIntercepTouchEvent里面返回true 是不可以禁止ViewPager的滑动
原文出处:http://my.oschina.net/u/1024921/blog/131485