我有一个广播组,我不想让用户能够选择任何按钮,直到我的应用程序中选择了一个特定的复选框。如果未选中该复选框,则会禁用无线电组。我该怎么做呢。
答案 0 :(得分:61)
真正的诀窍是遍历所有子视图(在本例中为CheckBox
)并将其称为setEnabled(boolean)
这样的事情可以解决问题:
//initialize the controls
final RadioGroup rg1 = (RadioGroup)findViewById(R.id.radioGroup1);
CheckBox ck1 = (CheckBox)findViewById(R.id.checkBox1);
//set setOnCheckedChangeListener()
ck1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton checkBox, boolean checked) {
//basically, since we will set enabled state to whatever state the checkbox is
//therefore, we will only have to setEnabled(checked)
for(int i = 0; i < rg1.getChildCount(); i++){
((RadioButton)rg1.getChildAt(i)).setEnabled(checked);
}
}
});
//set default to false
for(int i = 0; i < rg1.getChildCount(); i++){
((RadioButton)rg1.getChildAt(i)).setEnabled(false);
}
答案 1 :(得分:1)
您可以使用CheckBox上的onCheckedChangeListener并使用RadioGroup上的方法setEnabled。
祝福, 添
答案 2 :(得分:1)
如果您只有几个单选按钮,更好的方法是为所有孩子设置setClickable(false)
radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
答案 3 :(得分:0)
无法直接禁用RadioGroup,我们必须遍历单选按钮并将其设置为false。
答案 4 :(得分:0)
科林解决方案
for (index in 0..radio.childCount - 1)
radio.getChildAt(index).isEnabled = false
答案 5 :(得分:-1)
根据复选框的状态执行操作并相应地设置radiogroup。 假设您有一个名为radiogroup的无线电组,您可以通过
启用或禁用radiogroupradiogroup.setEnabled(真);
将OnCheckedChangeListener()添加到您的复选框。