android - 不能同时处理点击和触摸事件

标签 android listeners ontouchlistener

我正在尝试处理按钮上的触摸事件和单击事件。我执行以下操作:

button.setOnClickListener(clickListener);
button.setOnTouchListener(touchListener);

当注册任何一个监听器时,一切正常,但当我尝试同时使用它们时,只会触发触摸事件。任何解决方法?我做错了什么?

最佳答案

这有点棘手。

如果你设置了onTouchListener,你需要在ACTION_DOWN中返回true,告诉系统我已经消费了这个事件并且它不会' t 渗透到其他听众。

但是 OnClickListener 不会被触发。

所以你可能会想,我会在那里做我的事情并返回 false 以便我也可以获得点击。 如果您这样做,它将起作用,但您不会订阅其他即将发生的触摸事件(ACTION_MOVEACTION_UP) 因此,唯一的选择是在此处返回 true,但是您将不会收到我们之前所说的任何点击事件。

所以您需要在 ACTION_UP 中使用 view.performClick()

手动执行点击

这会起作用。

关于android - 不能同时处理点击和触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159366/

相关文章:

android - 对系统对话框 SmsManager 使用react

node.js - 删除包装在匿名函数中的命名回调?

android - getChildAt 在 GridView 中返回错误的 View

java - 按下/实现按钮时执行操作的替代方案,android

android - 屏幕旋转后,findFragmentById() 返回一个 fragment ,即使布局中没有这样的 ID

Android Exoplayer 只播放没有视频的音频

android - Ionic Music Controls 不工作 | Ionic 3 + Ionic Native Media + Ionic Native 音乐控制

android - 在两个 fragment 之间添加一个监听器

java - 让 ENTER 像使用 JTextField 一样使用 JSpinner

android - 在 Canvas 绘图上设置触摸监听器