【问题标题】:Android - Cannot setClickable(false) a button after clickAndroid - 单击后无法设置可单击(假)按钮
【发布时间】:2020-09-01 05:51:57
【问题描述】:

我有一个类似开关的按钮,我在点击后尝试 setClickable(false) 以便只处理第一次点击 (在意外双击/多次单击的情况下会忽略额外的点击)。

这是一个类似的代码:

Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Button.setClickable(false);
        //do other things
    }
});

最后,我有一个代码,我将根据状态变量将可点击重置为真,这样我就可以关闭了。

问题是当我很快单击按钮时,似乎仍在处理后续的单击。 setClickable() 的效果有延迟吗?

另外,我已经阅读了关于使用 setEnabled(false) 的信息,但在我的情况下我不能使用它。我需要该按钮仍处于启用状态但不可点击。

【问题讨论】:

  • 完成其他操作后,您可以重新启用按钮
  • 你可以尝试setVisibilityGONE

标签: java android button clickable


【解决方案1】:

从您的评论来看,您可能需要这样的东西。

  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;
}
});

【讨论】:

    【解决方案2】:

    您可以在onClick 方法中使用button.setEnabled(false); 来禁用该按钮。

    禁用的按钮不会触发onClick 方法,您可以在需要时使用button.setEnabled(true); 轻松地重新启用它。

    【讨论】:

    • 我无法禁用该按钮。我需要该按钮仍处于启用状态,但不可点击。我还没有说明的原因是,当开关打开时,按钮需要长按。
    【解决方案3】:

    您可以添加另一个名为 buttonEnabled 左右的变量,并使用 true 对其进行初始化。然后在 onclick 中执行此操作:

    Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Button.setClickable(false);
            if(buttonEnabled) {
                //do other things
            }
            buttonEnabled = false;
        }
    });
    

    请注意,如果要重新激活它,您需要将变量更改为

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多