2012-03-28 5 views
1

Für meine spezielle Anwendung möchte ich in der Lage sein, einen Radiobutton an- und auszuschalten, indem man ihn berührt, ähnlich wie bei einer Checkbox. Ich brauche jedoch die Radiobuttons, die sich innerhalb ihrer Gruppen gegenseitig ausschließen. Es gibt 64 Buttons und 8 Gruppen, also möchte ich keine Checkboxen verwenden und die Toggle-Funktionalität manuell programmieren. Kann ich einen onTouchListener() mit einem Radiobutton verwenden? Gibt es einen Weg, dies zu erreichen? Vielen Dank im Voraus für jede Unterstützung.RadioButton-CheckBox Combo

+0

RadioButtons sind nach ihrer Definition innerhalb einer Gruppe gegenseitig exklusiv. Ich verstehe nicht, was du hier fragst. – Squonk

+0

Ich möchte in der Lage sein, einen Radiobutton zu berühren und es deaktivieren, ähnlich einem Kontrollkästchen. – Cameron

+0

Wenn Sie jedoch eine Optionsfeldgruppe verwenden, sollte die eine oder andere Schaltfläche immer aktiviert sein. Der richtige Weg, um keine Tasten aktiviert zu haben, wäre eine zusätzliche Optionsschaltfläche innerhalb dieser Gruppe mit der Bezeichnung "Keine Auswahl" oder ähnlich. – Squonk

Antwort

1

Sie suchen nach einem UI-Paradigma, das weder ein Kontrollkästchen noch ein Optionsfeld ist. Am besten ist es, die Kontrollkästchen zu aktivieren und dann die gegenseitige Exklusivität zu implementieren. zB

myCheckbox1.setOnCheckChangedListener(new OnCheckChangedListener() { 
    @Override 
    public void onCheckChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) { 
     myCheckbox2.setChecked(false); 
     myCheckbox3.setChecked(false); 
     myCheckbox4.setChecked(false); 

     // start playback 
    } else { 
     // stop playback 
    } 
    } 
); 

Beachten Sie, wenn Sie in der Lage sind, alle die Schaltfläche IDs pro Gruppe aufzuzählen, können Sie den Code allgemein schreiben können, wie,

if (isChecked) { 
     int myGroup = (Integer) buttonView.getTag(); // Define the group in the view's tag 
     for (int id: groups.get(myGroup)) { 
     if (id != buttonView.getId()) ((CompoundButton) findViewById(id)).setChecked(false); 
    } 

Die andere, kompliziertere Antwort sein würde Erstellen Sie Ihr eigenes UI-Widget und geben Sie ihm die gewünschte Semantik. Das ist nicht der Umfang dessen, was ich hier beschreiben könnte.

+0

Ich schätze die Hilfe sehr, aber wie gesagt, ich habe 64 Tasten in 8 Gruppen verteilt. Es wäre sehr umständlich, es manuell zu machen. – Cameron

+0

Sie müssen es nicht manuell tun. Wenn Sie die Schaltflächen in Arrays haben, können Sie einfach alle außer der ausgewählten Schaltfläche ausschalten. Es sind ein paar Zeilen Code. Egal, Sie werden nicht bekommen, was Sie von einem Radio-Button aus sehen. –