【问题标题】:How to Enable or Disable a checkbox in android如何在android中启用或禁用复选框
【发布时间】:2012-09-07 11:55:33
【问题描述】:

我的快速警报对话框中有 4 个复选框...我想要的是,当我选中 [启用] 1 个复选框时,其他 3 个复选框必须禁用。我点击它们,但没有禁用它们。我不知道该怎么做。

这就是我要找的东西:

    checkmrn  =  (CheckBox) container.findViewById(R.id.MrnCheckBox);
    checkmrn.setText("By Mrn");
    checkmrn.setEnabled(false);
    checkdate  =  (CheckBox) container.findViewById(R.id.dateCheckBox);
    checkdate.setText("By Date");
    checkname  =  (CheckBox) container.findViewById(R.id.nameCheckBox);
    checkname.setText("By Name");
    checklocation  =  (CheckBox) container.findViewById(R.id.locationCheckBox);
    checklocation.setText("By Location");
    okButton = (Button) container.findViewById(R.id.okButton);
    okButton.setText("Ok");

    checkmrn.setOnClickListener(new OnClickListener() {          
          @Override
          public void onClick(View v) {                  
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show();
            }        
          }
        });
    checkdate.setOnClickListener(new OnClickListener() {             
          @Override
          public void onClick(View v) {                  
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show();
            }        
          }
        });
    checkname.setOnClickListener(new OnClickListener() {             
          @Override
          public void onClick(View v) {                  
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show();
            }        
          }
        });
    checklocation.setOnClickListener(new OnClickListener() {             
          @Override
          public void onClick(View v) {                  
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show();
            }        
          }
        });

【问题讨论】:

  • 如果您想要单选,为什么不使用单选按钮?

标签: android android-layout checkbox


【解决方案1】:

您可以使用checkBox 的属性setClickable

以下是一个简单的代码示例,它可以禁用复选框:

CheckBox check_1;
check_1 = (CheckBoX)findViewById(R.id.(the id of your checkbox in xml));
check_1.setClickable(false);
//then this checkbox will be disabled.

【讨论】:

    【解决方案2】:

    当您点击其他布局或按钮等时,您可以添加此行代码 ->

    1. Kotlin 中: yourCheckbox.isChecked = !yourCheckbox.isChecked

    2. Java 中: yourCheckbox.setChecked() = !yourCheckbox.isChecked()

    希望这对你有帮助:)

    【讨论】:

      【解决方案3】:

      这是上述问题的工作代码。

        checkmrn  =  (CheckBox) container.findViewById(R.id.MrnCheckBox);
          checkmrn.setText("By Mrn"); 
          checkdate  =  (CheckBox) container.findViewById(R.id.dateCheckBox);
          checkdate.setText("By Date");   
          checkname  =  (CheckBox) container.findViewById(R.id.nameCheckBox);
          checkname.setText("By Name");
          checklocation  =  (CheckBox) container.findViewById(R.id.locationCheckBox);
          checklocation.setText("By Location");
      
          okButton = (Button) container.findViewById(R.id.okButton);
          okButton.setText("Ok");
      
          checkmrn.setOnClickListener(new OnClickListener() {          
                @Override
                public void onClick(View v) {                  
      
                    if (((CheckBox) v).isChecked()) {
                        checkmrn.setChecked(true);
                        Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show();
                        checkdate.setChecked(false);
                        checkname.setChecked(false);
                        checklocation.setChecked(false);
                          } 
                }
              });
          checkdate.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                   
                    if (((CheckBox) v).isChecked()) {
                        checkdate.setChecked(true);
                        Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkname.setChecked(false);
                        checklocation.setChecked(false);
                          } 
                }
              });
          checkname.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                                     
                    if (((CheckBox) v).isChecked()) {
                        checkname.setChecked(true);
                        Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkdate.setChecked(false);
                        checklocation.setChecked(false);
                          }  
                }
              });
          checklocation.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                  
      
                    if (((CheckBox) v).isChecked()) {
                        checklocation.setChecked(true);
                        Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkname.setChecked(false);
                        checkdate.setChecked(false);
                          } 
                }
              });
      checkmrn  =  (CheckBox) container.findViewById(R.id.MrnCheckBox);
          checkmrn.setText("By Mrn"); 
          checkdate  =  (CheckBox) container.findViewById(R.id.dateCheckBox);
          checkdate.setText("By Date");   
          checkname  =  (CheckBox) container.findViewById(R.id.nameCheckBox);
          checkname.setText("By Name");
          checklocation  =  (CheckBox) container.findViewById(R.id.locationCheckBox);
          checklocation.setText("By Location");
      
          okButton = (Button) container.findViewById(R.id.okButton);
          okButton.setText("Ok");
      
          checkmrn.setOnClickListener(new OnClickListener() {          
                @Override
                public void onClick(View v) {                  
      
                    if (((CheckBox) v).isChecked()) {
                        checkmrn.setChecked(true);
                        Toast.makeText(mContext, "By Mrn", Toast.LENGTH_SHORT).show();
                        checkdate.setChecked(false);
                        checkname.setChecked(false);
                        checklocation.setChecked(false);
                          } 
                }
              });
          checkdate.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                   
                    if (((CheckBox) v).isChecked()) {
                        checkdate.setChecked(true);
                        Toast.makeText(mContext, "By Date", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkname.setChecked(false);
                        checklocation.setChecked(false);
                          } 
                }
              });
          checkname.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                                     
                    if (((CheckBox) v).isChecked()) {
                        checkname.setChecked(true);
                        Toast.makeText(mContext, "By Name", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkdate.setChecked(false);
                        checklocation.setChecked(false);
                          }  
                }
              });
          checklocation.setOnClickListener(new OnClickListener() {             
                @Override
                public void onClick(View v) {                  
      
                    if (((CheckBox) v).isChecked()) {
                        checklocation.setChecked(true);
                        Toast.makeText(mContext, "By Location", Toast.LENGTH_SHORT).show();
                        checkmrn.setChecked(false);
                        checkname.setChecked(false);
                        checkdate.setChecked(false);
                          } 
                }
              });
      

      【讨论】:

        【解决方案4】:

        只需在 RadioGroup 中使用 RadioButton!!!这就是你想要的!

        【讨论】:

          【解决方案5】:

          试试这样:

          private OnCheckedChangeListener listener = new OnCheckedChangeListener() {
          public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
          if(isChecked){
          switch(arg0.getId())
            {
              case R.id.firstCheckBox:
                   firstCheckBox.setChecked(true);
                   secondCheckBox.setChecked(false);
                   thirdCheckBox.setChecked(false);
                   break;
              case R.id.secondCheckBox:
                   firstCheckBox.setChecked(false);
                   secondCheckBox.setChecked(true);
                   thirdCheckBox.setChecked(false);
                   break;
             case R.id.thirdCheckBox:
                  firstCheckBox.setChecked(false);
                  secondCheckBox.setChecked(false);
                 thirdCheckBox.setChecked(true);
                  break;
            }
          }
          
          }
          };
          

          【讨论】:

            【解决方案6】:

            当点击复选框时,您可以使其他复选框为假,当前为真

                       if (((CheckBox) v).isChecked()) {
                        currentchk.setChecked(true);
                         otherchkbox.setChecked(false);
                        }        
            

            【讨论】:

              【解决方案7】:

              如果您想在选择一个选项时禁用其他选项,请创建禁用/启用方法

              protected void setGroupState(boolean state)
              {
                   //here put all options to have state changed in one go
              }
              

              然后在应该改变“组”状态的选项的点击处理程序中

              以适当的状态调用它。例如设置组状态(假);

              最好的问候

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-08-12
                • 1970-01-01
                • 2020-11-14
                • 2015-12-09
                • 2017-12-02
                • 2011-08-28
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多