如何解决Android-单击后无法setClickablefalse一个按钮
我有一个类似开关的按钮,在我单击它之后尝试 setClickable(false),以便仅处理第一次单击 (在意外双击/多次点击的情况下,额外点击将被忽略)。
这是类似的代码:
Button.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button.setClickable(false);
//do other things
}
});
然后,最终,我在某个地方有一个代码,该代码将根据状态变量将clickable重置为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;
}
});
,
您可以在button.setEnabled(false);
方法中使用onClick
来禁用按钮。
禁用的按钮不会触发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;
}
});
请注意,如果要重新激活变量,则需要将其更改为
,尝试使用。
button.setEnabled(false);
对于您而言,您将执行以下操作:
view.findViewById(R.id.inviteButton).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do other things
b.setEnabled(false);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。