如何为 ImageButton 组合 OnClickListener 和 OnTouchListener

新手上路,请多包涵

当用户单击 ImageButton 我试图创建一个 同时 实现 OnClickListenerOnTouchListener 的静态类

static class ClickListenerForScrolling implements OnClickListener, OnTouchListener

具有以下方法:

 @Override
public void onClick(View v)

@Override
public boolean onTouch(View arg0, MotionEvent arg1)

这背后的整个想法是在用户触摸它时更改 ImageButton 的图像源,并在用户单击此按钮时执行任务。任何人都可以提示我如何执行此操作吗?

原文由 Tobias Moe Thorstensen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 280
1 个回答

由于这两个动作都包含手势“将手指放在屏幕上 - 从屏幕上抬起手指”,因此您无法确定它是触摸动作还是点击动作。因此,如果您在此图像按钮上实现两个侦听器,则触摸/单击将更改图片并按下按钮。不确定这些事件是否有确定的顺序……

但是,如果您想分离这些事件,您将需要为其中一个动作定义不同的手势(例如擦拭以更改图片),或者创建处理事件的不同区域,例如图像不适合整个按钮和自由区域作为按钮点击区域。

HTH

更新:

我发现,a TouchEventClickEvent 更通用,因此它首先被调用。

 public abstract boolean onTouch (View v, MotionEvent event)

如果侦听器已使用该事件,则返回 true,否则返回 false。所以你可以在你的实现中决定事件是否也应该由 OnClickListener 处理,然后只返回 false

原文由 Sven Menschner 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题