我有一个类似开关的按钮,在点击后我试图setClickable(false(,这样只会处理第一次点击(在意外双击/多次单击的情况下,会忽略额外的单击(。
这里有一个类似的代码:
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button.setClickable(false);
//do other things
}
});
然后,最终,我在某个地方有了一个代码,我将根据状态变量将可点击重置为true,这样我就可以关闭了。
问题是,当我很快点击按钮时,似乎后续的点击仍然得到了处理。setClickable((的效果是否有延迟?
此外,我读过关于使用setEnabled(false(的文章,但在我的情况下无法使用它。我需要该按钮仍然处于启用状态,但不能单击。
根据您的评论判断,您可能需要这样的东西。
Boolean SWITCH_ON = false;
Button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(!SWITCH_ON ){
SWITCH_ON = true;
}
}
});
Button.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
if(SWITCH_ON ){
// do your task for long click here ...SWITCH_ON
}
return true;
}
});
您可以在onClick
方法中使用button.setEnabled(false);
来禁用该按钮。
禁用的按钮不会触发onClick
方法,您可以在需要时使用button.setEnabled(true);
轻松地重新启用它。
您可以添加另一个名为buttonEnabled左右的变量,并使用true对其进行初始化。然后在onclick中这样做:
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button.setClickable(false);
if(buttonEnabled) {
//do other things
}
buttonEnabled = false;
}
});
注意,如果你想重新激活,你需要将变量更改为