在开发中遇到了这样的问题:
在同一布局中使用了ScrollView与Viewpager,Viewpager是ScrollView的子view。在开发的过程中发现ScrollView触屏事件没有问题,但是Viewpager却无法触发触屏事件,就是左右滑动事件。笔者尝试了很多办法去解决,终于发现原因:
ScrollView作为父view,会拦截子view的Viewpager触屏事件。
笔者的解决办法是:
在Viewpager中重写dispatchTouchEvent的方法,然后在该方法中设置父view不拦截触屏事件
代码如下:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
getParent().requestDisallowInterceptTouchEvent(true); // 让父类不拦截触摸事件
return super.dispatchTouchEvent(event);
}
其实ScrollView与ListView也会出现类似的情况,笔者也遇到过
后来因为需求问题,直接将ScrollView去掉了,所以并没有去了解太多
有兴趣额朋友可以自己去尝试