Android:为什么长按也会触发正常点击?

时间:2011-03-25 02:59:45

标签: android events listview onlongclicklistener

我有一个带有侦听器的ListView,可以进行长时间的点击和定期点击。

为什么,当我长按列表项时,也会调用常规点击事件?

我需要为不同的点击提供两个单独的功能。

4 个答案:

答案 0 :(得分:254)

来自Event Listeners

  

onLongClick() - 返回一个布尔值,表示您是否已经消耗了该事件,并且不应该进一步携带它。也就是说,返回true表示你已经处理了这个事件,它应该在这里停止;如果您没有处理它和/或该事件应该继续任何其他点击监听器,则返回false。

您是否正在从true返回onLongClick()并仍然获得正常的点击事件?

已编辑添加:对于ListView,您可能正在使用OnItemLongClickListeneronItemLongClick()使用类似的布尔返回值来指示它是否消耗了该事件。

答案 1 :(得分:36)

用简单的术语重述答案:

假设:

@Override
public boolean onLongClick(View view) {

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

因此,如果您不想在onClick之后触发onLongClick,那么您应该return true来自onLongClick事件。

答案 2 :(得分:16)

确保您为OnClickListener方法覆盖onClick。另外,请确保为OnLongClickListener方法覆盖onLongClick。并确保您的onLongClick方法返回true,因为这将消耗onClick

答案 3 :(得分:0)

您可以实现setOnLongClickListener创建new View.OnClickListener()new View.OnLongClickListener()的实例,如果您创建了Long单击并实现了普通的OnclickListener,则单击激活该方法会出现此错误。 您应该使用new View.OnLongClickListener()仅捕获长点击