【问题标题】:Android disable button when checkbox not checked未选中复选框时Android禁用按钮
【发布时间】:2012-07-30 09:51:00
【问题描述】:

我有一个多个复选框和一个按钮。如果没有选中任何复选框,我应该如何禁用按钮,如果选中则启用按钮?

【问题讨论】:

    标签: android button checkbox


    【解决方案1】:

    试试这个,

     Button mButton=(Button)findViewById( R.id.button01);
        CheckBox mCheckBox= ( CheckBox ) findViewById( R.id.checkbox01);
        mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                if ( isChecked )
                {
                  mButton.setEnabled(true);
    
                }else{
      mButton.setEnabled(false);
    }
    
            }
        });
    

    【讨论】:

      【解决方案2】:

      当您进入该视图时,禁用按钮(在您的 XML 中),并且每当用户点击任何复选框时,都会管理一个全局变量,例如,如果全局计数 > 1,则在该活动中启用按钮。

      管理全局变量,如果用户打开复选框,则增加它,如果他关闭复选框,则减少计数器。

      我希望你明白这个概念。

      基本上,这都是关于管理打开多少个复选框的计数;如果打开了多个按钮,则启用该按钮,否则将其禁用。

      【讨论】:

        【解决方案3】:

        您可以对按钮使用 setVisibility() 方法,而不是启用和禁用按钮。 按以下方式。

        Button btn =(Button)findViewById( R.id.mybutton);
        CheckBox checkBox= ( CheckBox ) findViewById( R.id.checkbox01);
        mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                if ( isChecked )
                {
                  btn.setVisibility(VISIBLE);
                }
                  else{
                        btn.setVisibility(GONE);
                       }
             }
        });
        

        通过使用此方法,您可以设置视图的可见性。您的按钮只有在 checkBox 被欺骗时才可见,否则您的按钮将不可见。让我知道它是否适合您。

        【讨论】:

        • 当我在我的代码中使用这个checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){...} 时,我收到这个错误The method setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener) in the type CompoundButton is not applicable for the arguments (new OnCheckedChangeListener(){}) 关于我会丢失什么的任何想法/帮助?
        【解决方案4】:

        使用这个:

        myButton.setEnabled(false);     
        

        更多详情请见this question。

        【讨论】:

          【解决方案5】:

          您可以使用以下代码禁用按钮。

          mBtn.setEnabled(false);
          

          以后可以使用下面的代码启用它

          mBtn.setEnabled(true);
          

          【讨论】:

            【解决方案6】:
                mCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {        
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        mButton.setEnabled(isChecked);
                    }
                });
            

            就这么简单:)

            【讨论】:

              【解决方案7】:

              试试这个 termsAndConditionsCheckBox.setOnClickListener(new OnClickListener() {

                      @Override
                      public void onClick(View v) {
              
                          if (termsAndConditionsCheckBox.isChecked() && privacyPolicyCheckBox.isChecked()){
                              agreebutton.setEnabled(true);
                              agreebutton.setTextColor(getResources().getColor(android.R.color.white));
                              agreebutton.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));
                          }
                          else {
                              agreebutton.setEnabled(false);
                              agreebutton.setTextColor(getResources().getColor(android.R.color.white));
                              agreebutton.setBackgroundColor(getResources().getColor(android.R.color.darker_gray));
                          }
                      }   
                  });
                  privacyPolicyCheckBox.setOnClickListener(new OnClickListener() {
              
                      @Override
                      public void onClick(View v) {
                          if (termsAndConditionsCheckBox.isChecked() && privacyPolicyCheckBox.isChecked()){
                              agreebutton.setEnabled(true);
                              agreebutton.setTextColor(getResources().getColor(android.R.color.white));
                              agreebutton.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));
                          }
                          else {
                              agreebutton.setEnabled(false);
                              agreebutton.setTextColor(getResources().getColor(android.R.color.white));
                              agreebutton.setBackgroundColor(getResources().getColor(android.R.color.darker_gray));
                          }
              
                      }
                  });
              

              【讨论】:

                猜你喜欢
                • 2018-11-07
                • 2022-10-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-12-09
                • 1970-01-01
                相关资源
                最近更新 更多