Android radio-button deaktivieren
Die Anwendung ist ein step-Sequenzer-Anwendung mit 16 radio-Gruppen mit 8 Tasten in jeder Gruppe. Es funktioniert perfekt, außer einmal eine Gruppe hat eine Schaltfläche ausgewählt, ich kippe schalten Sie es aus, es sei denn, ich benutze die Schaltfläche löschen, die ich erstellt habe, löschen Sie alle radiogroups. Was ich hinzufügen möchte, ist ein code, der sagt, wenn einem ausgewählten radio-button ausgewählt ist es wieder einfach schaltet wie ein Schalter. Ich habe versucht, mit schaltet, aber dann andere Probleme entstanden mit dieser Methode. Unten sind zwei versuche, aber beide hört einfach auf, mich mit dem button
final RadioGroup radioGroup1 = (RadioGroup)findViewById(R.id.RadioGroup1);
RadioButton D1 = (RadioButton)findViewById(R.id.RadioButtonD1);
Button D1 = (Button)findViewById(R.id.RadioButtonD1);
D1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PdBase.sendFloat("D1", 74);
int selectedTypeId = radioGroup1.getCheckedRadioButtonId();
RadioButton D1 = (RadioButton) findViewById(selectedTypeId);
if(D1 != null) //This will be null if none of the radio buttons are selected
radioGroup1.clearCheck();
PdBase.sendFloat("D1", 0);
}
});
RadioButton lC1 = (RadioButton)findViewById(R.id.RadioButtonlowC1);
lC1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int selectedTypeId = radioGroup1.getCheckedRadioButtonId();
RadioButton lC1 = (RadioButton) findViewById(R.id.RadioButtonlowC1);
if (selectedTypeId == -1){
PdBase.sendFloat("lC1", 72);
}
else if (selectedTypeId == R.id.RadioButtonlowC1) {
radioGroup1.clearCheck();
PdBase.sendFloat("lC1", 0);
}
}
});
Warum gehst du nicht fügen Sie einfach die OFF-Taste, um jede Gruppe?
Dies ist in der Regel nicht, wie
Ich könnte das machen, aber so wie es ist monophon, ich will nur ein ausgewählte in jeder Gruppe
Mit einer clear-Taste für jede Gruppe arbeiten würde, aber nicht sehr praktisch
Sie bekommen nur eine ausgewählt in jeder Gruppe sowieso. Das ist, wie radio-buttons arbeiten. Ihr problem aus einer design-Perspektive ist, dass Sie tatsächlich über keine Schaltfläche ausgewählt ist, als eine zusätzliche Bedingung, die Sie haben keine Möglichkeit zum Umschalten.
Dies ist in der Regel nicht, wie
RadioButtons
Arbeit und nicht das, was die Leute erwarten. Sollten Sie einen RadioButton
wie none
zu Ihrer GruppeIch könnte das machen, aber so wie es ist monophon, ich will nur ein ausgewählte in jeder Gruppe
Mit einer clear-Taste für jede Gruppe arbeiten würde, aber nicht sehr praktisch
Sie bekommen nur eine ausgewählt in jeder Gruppe sowieso. Das ist, wie radio-buttons arbeiten. Ihr problem aus einer design-Perspektive ist, dass Sie tatsächlich über keine Schaltfläche ausgewählt ist, als eine zusätzliche Bedingung, die Sie haben keine Möglichkeit zum Umschalten.
InformationsquelleAutor A B | 2013-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vor kurzem hatte ich das selbe Bedürfnis - , eine radio-Gruppe, in denen das ausgewählte Element kann deaktiviert werden, indem Sie auf Tippen Sie es erneut an. Ich fand, dass ich konnte nicht erreichen, dass die Verwendung von Listener, aber ich war in der Lage, es zu tun mit einer benutzerdefinierten
RadioButton
wie so...Beachten Sie, dass die Schaltfläche aktiviert ist in unterschiedlicher Weise je nach seinem aktuellen Zustand, d.h., ruft
setChecked(true)
auf den button vs. BerufungclearCheck()
auf die Gruppe. WennsetChecked()
ist in beiden Fällen eine Schaltfläche, war nur deaktiviert, kann nicht sofort wieder gewählt - die Logik inRadioGroup
scheint sofort zu entfernen.Diesen button verwenden, ersetzen Sie einfach Ihre
<RadioButton>
tags mit<your.package.ToggleableRadioButton>
im layout XML.InformationsquelleAutor spaaarky21
Es eigentlich kann getan werden, mit Hörer aber mit einer
OnTouchListener
, die ausgelöst wird, bevor der button ' s Zustand hat sich geändert, statt der üblichenOnClickListener
. Folgendes funktioniert bei mir:Wo
radioGroup
ist die Muttergesellschaft vonradioButton1
undradioButton2
onTouch()
ist ziemlich low-level. Es scheint so, das deaktivieren der Schaltfläche für die gesten andere als ein Tippen/klicken Sie auf.Hmm, guter Punkt, @spaaarky21. Ich denke, wir sollten auch prüfen, ob das Ereignis ist des Typs
ACTION_DOWN
. Obwohl, dieses zu testen, habe ich nicht in der Lage gewesen, etwas zu lösen, schien abnormeInformationsquelleAutor wamfous
Ich habe gerade die Antwort von @spaaarky21
und mein vollständiger code so Aussehen und es funktioniert Prima!
Java-Klasse
Und für die XML-layout -
In diesem Fall müssen Sie nur ändern Sie das Paket, ich diese ist leicht zu finden, es ist nur am Anfang der Java-Klasse Flie (wenn Sie es von Android Studio)
InformationsquelleAutor user2356433
Bearbeiten von @spaaarky21 Antwort
InformationsquelleAutor Thinsky
Dies ist auch das tun des Jobs:
InformationsquelleAutor Niklas