ViewPager中requestDisallowInterceptTouchEvent

来源:互联网 发布:高速公路机电系统优化 编辑:程序博客网 时间:2024/06/02 05:37

getParent().requestDisallowInterceptTouchEvent(true)方法。一旦底层View收到touch的action后调用这个方法,这次touch事件中父层就不能拦截了。


在ViewPager的子View中可以使用requestDisallowInterceptTouchEvent方法,让ViewPager不要拦截子view的事件。

在子View的dispatchTouchEvent方法中调用requestDisallowInterceptTouchEvent。

如下:

@Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        Log.i("test", "MyViewA  dispatchTouchEvent  "+EventUtils.getMotion(event));
        getParent().requestDisallowInterceptTouchEvent(true);
        return super.dispatchTouchEvent(event);
    }


例子:我重写了ViewPager,打印touch事件log,自定义一个View,可以消耗点击事件。

例子代码:http://download.csdn.net/detail/fengyun703/9430849


没有加上该方法前点击事件触发如下图:

可以看到ViewPager在move事件后会拦截事件。MyViewA没有收到后来的事件。


加上阻止拦截后,可以看到Viewpager并没有拦截事件了。


0 0