2

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

4

7 回答 7

8

试试这个,

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

        }
    });
于 2012-07-30T09:56:16.030 回答
2

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

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

我希望你明白这个概念。

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

于 2012-07-30T09:56:09.773 回答
2

您可以对按钮使用 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 被欺骗时才可见,否则您的按钮将不可见。让我知道它是否适合您。

于 2012-07-30T10:27:22.263 回答
0
    mCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {        
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            mButton.setEnabled(isChecked);
        }
    });

就如此容易 :)

于 2014-10-02T06:14:46.910 回答
0

用这个:

myButton.setEnabled(false);     

有关更多详细信息,请参阅此问题

于 2012-07-30T09:54:45.183 回答
0

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

mBtn.setEnabled(false);

并且可以稍后使用以下代码启用它

mBtn.setEnabled(true);
于 2012-07-30T09:56:22.050 回答
0

试试这个 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));
            }

        }
    });
于 2015-08-07T05:45:38.220 回答