我使用按钮的onLongClick和onClick事件来获取用户输入。每当;用户长按并触发onLongClick事件,也会触发onClick事件。我找不到我的问题。两种方法的代码如下所示:
@Override
public void onClick(View v) {
switch(((Button) v).getId())
{
case R.id.enter:
EntertheNumber();
break;
case R.id.clear:
CleartheNumber();
break;
case R.id.number_zero:
case R.id.number_one:
case R.id.number_two:
case R.id.number_three:
case R.id.number_four:
case R.id.number_five:
case R.id.number_six:
case R.id.number_seven:
case R.id.number_eight:
case R.id.number_nine:
AddtotheNumber(mEditor, (Button) v);
break;
}
@Override
public boolean onLongClick(View view) {
if(SMBGuesstheNumber.bDisplayFlagList)
{
theActiveButton = (Button) view;
showDialog(R.id.display_flaglist);
}
return false;
}
实际上,我的项目是开源的。因此,您可以在http://code.google.com/p/guessthenumber/
找到所有代码谢谢。
答案 0 :(得分:35)
我不确定这些事件发生的顺序,但是onLongClick处理程序返回一个bool来指示事件是否已被处理。如果您处理它,则应返回true,以便不会调用其他单击事件。我不知道这是否会阻止onClick()被阻止。
你也可以使用setClickable(boolean)和setLongClickable(boolean)来关闭和打开这些事件
您可以找到此信息以及有关UI事件here的更多信息。
答案 1 :(得分:0)
答案 2 :(得分:0)
LongClick SingleClick上的解决方案不起作用:
rippleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Your code
}
});
rippleView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});