【发布时间】:2012-07-30 09:51:00
【问题描述】:
我有一个多个复选框和一个按钮。如果没有选中任何复选框,我应该如何禁用按钮,如果选中则启用按钮?
【问题讨论】:
我有一个多个复选框和一个按钮。如果没有选中任何复选框,我应该如何禁用按钮,如果选中则启用按钮?
【问题讨论】:
试试这个,
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);
}
}
});
【讨论】:
当您进入该视图时,禁用按钮(在您的 XML 中),并且每当用户点击任何复选框时,都会管理一个全局变量,例如,如果全局计数 > 1,则在该活动中启用按钮。
管理全局变量,如果用户打开复选框,则增加它,如果他关闭复选框,则减少计数器。
我希望你明白这个概念。
基本上,这都是关于管理打开多少个复选框的计数;如果打开了多个按钮,则启用该按钮,否则将其禁用。
【讨论】:
您可以对按钮使用 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(){}) 关于我会丢失什么的任何想法/帮助?
【讨论】:
您可以使用以下代码禁用按钮。
mBtn.setEnabled(false);
以后可以使用下面的代码启用它
mBtn.setEnabled(true);
【讨论】:
mCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mButton.setEnabled(isChecked);
}
});
就这么简单:)
【讨论】:
试试这个 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));
}
}
});
【讨论】: