为什么可以使用getParent()。RequestDisallowInterceptTouchEvent(true)禁止Intercepted

时间:2018-05-24 09:01:59

标签: android android-event

    @Override   
    public boolean dispatchTouchEvent(MotionEvent ev) {  
        // why this code can be executed.
        getParent().requestDisallowInterceptTouchEvent(true); 
        return super.dispatchTouchEvent(ev);   
    } 

getParent().requestDisallowInterceptTouchEvent(true)告诉父母不要拦截触摸事件。但是如果父级已经拦截了触摸事件,则该事件无法传递给子视图,子视图如何执行getParent().requestDisallowInterceptTouchEvent(true)

1 个答案:

答案 0 :(得分:0)

我会给你一个简单的例子来说明为什么使用。

getParent().requestDisallowInterceptTouchEvent()

如果我有一个ViewPager,并且每个页面都是ScrollableView(水平滚动)。现在有一个条件可以滚动并使用滑动来更改ViewPager的页面。 即View会变得难以滚动或滑动!!!

因此,需要在子视图(即ScrollableView)中检查此条件,一旦条件匹配,请使用滚动并在下面进行设置

getParent().requestDisallowInterceptTouchEvent(true)

由于您不希望任何父视图(即ViewPager)干扰子事件。因此,基本上,框架将不会调用任何父视图Reference的onintercepttouchevent()

但是,如果您希望ViewPager在下面获得Event的设置

getParent().requestDisallowInterceptTouchEvent(false)

注意:默认情况下,每次将触摸事件的requestDisallowInterceptTouchEvent的每个ACTION_DOWN调用设置为false