我正在尝试处理按钮上的触摸事件和单击事件。我执行以下操作:
button.setOnClickListener(clickListener);
button.setOnTouchListener(touchListener);
当注册任何一个监听器时,一切正常,但当我尝试同时使用它们时,只会触发触摸事件。任何解决方法?我做错了什么?
最佳答案
这有点棘手。
如果你设置了onTouchListener
,你需要在ACTION_DOWN
中返回true
,告诉系统我已经消费了这个事件并且它不会' t 渗透到其他听众。
但是 OnClickListener
不会被触发。
所以你可能会想,我会在那里做我的事情并返回 false
以便我也可以获得点击。
如果您这样做,它将起作用,但您不会订阅其他即将发生的触摸事件(ACTION_MOVE
、ACTION_UP
)
因此,唯一的选择是在此处返回 true
,但是您将不会收到我们之前所说的任何点击事件。
所以您需要在 ACTION_UP
中使用 view.performClick()
这会起作用。
关于android - 不能同时处理点击和触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159366/