在android 事件传递的过程中,事件一层一层向下传递,直到父类有拦截,否则会一直传递到底层View的onTouchEvent方法。
如果父类有拦截,则直接跳过子类,走父类的onTouchEvent方法。
冒泡过程中只会有一个控件的ontouchEvent方法返回true,返回true代表事件不再向上冒泡。返回false会继续向上冒泡。
其中,requestDisallowInterceptTouchEvent方法可以阻止父类拦截事件,使用方法是:
重写自己用到的View的onTouchEvent方法,在其ACTION_DOWN的时候,调用父View的requestDisallowInterceptTouchEvent(true)方法设置,在ACTION_UP或者ACTION_CANCEL的时候,调用调用父View的requestDisallowInterceptTouchEvent(false)方法重置。