如何在选中复选框之前禁用RadioGroup

时间:2012-02-21 11:40:59

标签: android checkbox radio-group

我有一个广播组,我不想让用户能够选择任何按钮,直到我的应用程序中选择了一个特定的复选框。如果未选中该复选框,则会禁用无线电组。我该怎么做呢。

6 个答案:

答案 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的无线电组,您可以通过

启用或禁用radiogroup

radiogroup.setEnabled(真);

将OnCheckedChangeListener()添加到您的复选框。