view分发事件之监听无效

作者: 喂_balabala | 来源:发表于2017-12-27 10:58 被阅读0次

ACTION_UP ACTION_MOVE无效
原因一

<meta charset="utf-8">

当手指滑动到设置了上面Touch监听器的ImageView时,总是打印不出来ACTION_MOVE这里,很明显是根本没有进去,后来各种查问题都查不到,因为ACTION_DOWN是可以进入的,但是ACTION_MOVE和ACTION_UP却不行,已经不是代码的问题了。

各种查找才发现,要把设置监听的这个View的属性设置成 

 [Android](http://lib.csdn.net/base/android) 

Android:clickable="true" 这样才可以响应ACTION_MOVE和ACTION_UP了。

原因二

<meta charset="utf-8">

低级错误,也是因为不知道函数具体用法所犯的错误

public boolean onTouchEvent(

 [MotionEvent](http://../reference/android/view/MotionEvent.html) 

 MotionEvent.event)

   Since: 

 [API Level 1](http://../guide/appendix/api-levels.html#level1) 

   Implement this method to handle touch screen motion events.

Parameters



The motion event.

 

ReturnsTrue if the event was handled, false otherwise.  

这个函数返回true代表这个事件已经做完,可以响应下一个事件

而系统的 onTouchEvent(),预设使用Oeverride这个方法,通常情況下去呼叫super.onTouchEvent()并传回布林值。但是这里要注意一点,预设如果去呼叫super.onTouchEvent()則很有可能super里面并没做任何事,并且回传false回來,一旦回传false回來,很可能后面的event (例如:Action_Move、Action_Up) 都会收不到了,所以为了确保保后面event能順利收到,要注意是否要直接呼super.TouchEvent()。

所以,一般可以直接返回true

相关文章

网友评论

    本文标题:view分发事件之监听无效

    本文链接:https://www.haomeiwen.com/subject/qnnygxtx.html