onInterceptTouchEvent()是否真的像sdk所说的那样工作?

时间:2011-06-29 10:49:52

标签: android

sdk说:

  

3,只要你从这个函数返回false,每个跟随事件(直到并包括最后一个)将首先在这里传递给目标的onTouchEvent()。

     

4,如果从此处返回true,则不会收到任何后续事件:目标视图将收到相同的事件但行动为ACTION_CANCEL,并且所有其他事件将被传递到您的onTouchEvent()方法,不再出现在这里。

但是当我使用这个方法时,无论onInterceptTouchEvent()返回什么,它都会做同样的工作!并且此方法从未捕获过MotionEvent.ACTION_MOVE或MotionEvent.ACTION_UP。任何人都可以帮我搞清楚吗?

部份!

2 个答案:

答案 0 :(得分:4)

通常情况下,触摸从最上面的视图到最低的onInterceptTouchEvent,然后通过onTouchEvent返回。

如果你在onInterceptTouchEven中返回true,你禁止它继续,你返回的视图是最后一个接受触摸的视图,你消耗它

您也可以禁止父视图使用该事件 requestDisallowInterceptTouchEvent(true);

答案 1 :(得分:0)

当你的视图的子节点都没有在onTouchEvent中返回true时,只能为MotionEvent.ACTION_DOWN调用onInterceptTouchEvent。

Here is a complete description of the MotionEvent processing