android - formular - So deaktivieren Sie eine RadioGroup, bis das Kontrollkästchen aktiviert ist



radio button css (4)

Ich habe eine Radiogruppe, die ich nicht verwenden möchte, um eine der Tasten auszuwählen, bis ein bestimmtes Kontrollkästchen in meiner App ausgewählt ist. Wenn das Kontrollkästchen deaktiviert ist, wird die Radiogruppe deaktiviert. Wie gehe ich dabei vor?

https://src-bin.com


Answer #1

Nehmen Sie Aktionen entsprechend dem Status des Kontrollkästchens vor und stellen Sie die Radiogruppe entsprechend ein. Unter der Annahme, dass Sie eine Radio-Gruppe namens Radio-Gruppe haben, können Sie die Radio-Gruppe aktivieren oder deaktivieren

radioogroup.setEnabled (true);

Fügen Sie OnCheckedChangeListener () zu Ihrem Kontrollkästchen hinzu.


Answer #2

RadioGroup kann nicht direkt deaktiviert werden, wir müssen den Radiobutton durchlaufen und ihn als falsch setzen.


Answer #3

Wenn Sie nur ein paar Optionsfelder haben, wäre es besser, für alle untergeordneten ElementeKlick (false) zu setzen

radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);

Answer #4

Der eigentliche Trick besteht darin, alle CheckBox Ansichten (in diesem Fall: CheckBox ) zu CheckBox und sie als setEnabled(boolean)

So etwas sollte den Trick machen:

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




radio-group