我有一个名为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;
}
});
现在,当我正常按下按钮时,信息显示为正常按下。当我长按按钮时,信息显示为长按和正常按两者。我想要的是,当我长按按钮时,长按事件不应该触发正常的按键事件。我怎么能实现这个?
答案 0 :(得分:41)
我得到了我的问题的解决方案。返回真实而不是假。见下文: -
checkIn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show();
return true;
}
});
答案 1 :(得分:12)
onLongClick()
- 返回一个布尔值,表示您是否已经消耗了该事件,并且不应该进一步携带它。也就是说,return true
表示你已经处理了这个事件,它应该在这里停止; return false
如果您没有处理它和/或该事件应该继续使用任何其他on-click listeners
。
答案 2 :(得分:5)
如果长按
,您应该返回true示例:强>
btnBookingMasterCab.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(preCheckoutInfo!=null){
rlChooseCard.setVisibility(View.VISIBLE);
}
return true;
}
});
答案 3 :(得分:1)
这是一个解决方案(如果(当两者都被触发时),首先是长按被触发,然后是正常按下,这将起作用:
int clickFlag = 0;
checkIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(clickFlag != 2){
Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_SHORT).show();
clickFlag = 0;
}
});
checkIn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_SHORT).show();
clickFlag = 2;
return false;
}
});
}
答案 4 :(得分:0)
public boolean onLongClick(View v)boolean如果单击则返回true 所以让返回真实;
答案 5 :(得分:-1)
试试这个;它应该工作。
checkIn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
checkIn.setOnClickListener(null);
Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();
return false;
}
});
答案 6 :(得分:-3)
尝试android:onclick =“btnPressed”而不是OnClickListener并使用OnLongClickListener在我的测试代码中没问题