Android: 为什么长时间的点击也会触发正常的点击?

我有一个带有侦听器的 ListView,用于长时间单击和常规单击。

为什么,当我长时间按下一个列表项时,常规的 click 事件也会被调用?

我需要有两个不同的点击功能。

49906 次浏览

来自 事件侦听器:

OnLongClick () -这将返回一个布尔值,以指示您是否已经使用了该事件,并且该事件不应该再进行下去。也就是说,返回 true 表示您已经处理了事件,它应该在这里停止; 如果您没有处理它,返回 false,并且/或者事件应该继续到任何其他单击侦听器。

你返回 true从你的 onLongClick()和仍然得到正常的点击事件?

编辑后添加 : 对于 ListView,可以使用 OnItemLongClickListener。那里的 onItemLongClick()使用一个类似的布尔返回值来指示它是否使用了事件。

确保您正在为 onClick方法重写 OnClickListener。还要确保为 onLongClick方法重写了 OnLongClickListener。并确保您的 onLongClick方法返回 true,因为这将消耗 onClick

用更简单的语言重述答案:

给出:

@Override
public boolean onLongClick(View view) {


return true; // or false
}
  • return true表示该事件已被使用。它已被处理。不会通知其他单击事件。
  • return false表示未使用该事件。任何其他单击事件将继续接收通知。

因此,如果您不希望 onClick也在 onLongClick事件之后被触发,那么您应该从 onLongClick事件触发 return true

您可以实现 setOnLongClickListener创建 new View.OnClickListener()new View.OnLongClickListener()的实例,如果您创建一个 Long click 并实现一个普通的 OnclickListener,您将得到单击激活该方法的错误。 您应该使用 new View.OnLongClickListener()只捕捉长时间的单击