@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)
?
答案 0 :(得分:0)
我会给你一个简单的例子来说明为什么使用。
getParent().requestDisallowInterceptTouchEvent()
如果我有一个ViewPager,并且每个页面都是ScrollableView(水平滚动)。现在有一个条件可以滚动并使用滑动来更改ViewPager的页面。 即View会变得难以滚动或滑动!!!
因此,需要在子视图(即ScrollableView)中检查此条件,一旦条件匹配,请使用滚动并在下面进行设置
getParent().requestDisallowInterceptTouchEvent(true)
由于您不希望任何父视图(即ViewPager)干扰子事件。因此,基本上,框架将不会调用任何父视图Reference的onintercepttouchevent()>
但是,如果您希望ViewPager在下面获得Event的设置
getParent().requestDisallowInterceptTouchEvent(false)
注意:默认情况下,每次将触摸事件的requestDisallowInterceptTouchEvent的每个ACTION_DOWN调用设置为false