【发布时间】:2013-09-20 07:34:25
【问题描述】:
我有一个名为 CheckIn 的按钮。看看我的代码。
checkIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_LONG).show();
});
checkIn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();
return false;
}
});
现在,当我正常按下按钮时,消息显示为正常按下。当我长按按钮时,消息显示为长按和正常按下。我想要什么,当我长按按钮时,只有长按事件应该触发而不是正常的按下事件。我怎样才能实现这个?
【问题讨论】:
-
在 onLongClickListener() 中禁用 onClickListener()。这可能是一种选择。我不确定它是否有效,只是激发想法:)
-
我认为@ClaireG 是对的。尝试使用该解决方案。
-
在
onClick和onLongClick两个函数中放置一个标志,以相互排斥(通过if语句)。如果您同时拥有两个侦听器,则无法取消捕获这两个事件之一。