Vorbereiten der angepassten Radiogruppenart des Layouts

8

Ich versuche ein benutzerdefiniertes radioogroup Layout wie im folgenden Bild zu erstellen. Ich habe fast 8-10 Zeilen dafür. Also habe ich ein linear layout vorbereitet, das eine horizontale Ausrichtung hat und die imageview , textview und radiobutton programmatisch hinzugefügt hat.

Wenn ich also ein radio button anchecke, sollten die anderen Optionsfelder automatisch deaktiviert werden. Bevor ich zu dieser Aufgabe selbst gehe, habe ich ein anderes Problem, dass, wenn meine Optionsfelder einmal überprüft werden, der Optionsfeld nicht deaktivierbar ist, obwohl auf sie geklickt wurde. Unten ist mein Code.

%Vor%

Ich habe beobachtet, indem ich Logbücher geführt habe. Das Steuerelement gibt onCheckedChanged () zum ersten Mal ein, wenn diese überprüft werden, aber nicht, wenn es nicht markiert ist. Ich frage mich, wie diese nicht kontrollierbar sind.

ODER Gemäß meiner Anforderung habe ich noch eine Idee, dieses Layout vorzubereiten, wie ich ein weiteres Layout für die Zeile in xml vorbereite. Dann 10 Mal die Sicht aufblasen. Aber dann auch, wie kann ich nur einen Radio-Knopf überprüfen, so dass andere ausgewählte deaktiviert wird. Kann mir bitte jemand vorschlagen, wie man diese Art von Radiogruppe am besten erreicht?

Hinweis: Ich habe meinen obigen Code beibehalten, um zu zeigen, was ich versucht habe. Wenn es völlig falsch ist, bitte gehen Sie einfach und bitte schlagen Sie mir vor, wie man das erledigt.

    
Apparatus 08.12.2013, 17:12
quelle

6 Antworten

6

Nach meiner Erfahrung ist es ein bisschen ein Unruhestifter, mit diesen angepassten RadioGroups zu arbeiten. Ich habe dir einen Code vorbereitet, der mein Ansatz ist, um das zu lösen, was du erreichen willst. Hoffe es funktioniert für dich!

Zuerst müssen Sie diese Funktion in Ihrem onCreate () (oder wo auch immer Sie die Ansichten erstellen) aufrufen

%Vor%

Die Klasse sollte

sein %Vor%

Und das xml zum aufblasen, etwas wie:

%Vor%     
Junior Buckeridge 08.12.2013 18:44
quelle
3

Ein bisschen zu spät, um zu antworten, aber ich treffe mich mit dem gleichen Problem und aus Frustration habe ich eine neue Klasse namens RadioGroupPlus geschrieben, um dieses Problem zu lösen, und ich wollte teilen.

Das Repo finden Sie hier: Ссылка

So installieren Sie

Fügen Sie die Bibliothek in Ihrer obersten Ebene build.gradle :

hinzu %Vor%

Fügen Sie in Ihrem app/build.gradle dies als Abhängigkeit hinzu:

%Vor%

Wie benutzt man

?

Umschließen Sie Ihr benutzerdefiniertes Layout in Ihrer XML-Datei mit <worker8.com.github.radiogroupplus.RadioGroupPlus , beispielsweise:

%Vor%

Ich lasse die Details absichtlich weg, damit sie leichter zu lesen sind. Ich habe mehr Informationen darüber geschrieben, wie man RadioGroupPlus in der README Seite benutzt. Außerdem schreibe ich auch ein einfaches Beispiel, wie man es benutzt. Wenn Sie mehr wissen möchten, können Sie mehr im RadioGroupPlus-Repo erfahren.

Ich hoffe, es hilft!

    
dragon who spits fire 29.12.2015 15:23
quelle
2

Der schwierige Teil ist, dass die Schaltfläche auf der rechten Seite sein soll.
Um dies zu tun, löschte ich die ursprüngliche Schaltfläche und setzte die rechte Schaltfläche als Schaltfläche Nichts für die Linke drawbar zu sagen.

%Vor%

Und das ist der Code:

%Vor%     
Kling Klang 08.12.2013 20:04
quelle
2

Ich bearbeitet das Layout Entfernen des zweiten Teils, der für Ihren Zweck nutzlos war.
Wenn Sie sich das Layout ansehen, werden Sie sehen, was der Trick ist, um die Schaltfläche auf der rechten Seite zu platzieren.
Dies kann auch im Code erfolgen, wenn Sie das Layout nicht verwenden möchten (warum?)
Bei Verwendung meines Layouts (ohne die Notwendigkeit einer Cusom-Klasse) wäre das Ergebnis ...

Ganz ähnlich wie Ihr Ziel, nicht wahr?

Die komplizierten Zeilen, die Sie in Ihrem Code replizieren sollten (wieder, warum?) Sind:

%Vor%     
Kling Klang 09.12.2013 11:25
quelle
2

Es ist nicht schwer, Ihre benutzerdefinierte Klasse RadioGroup entsprechend Ihren Anforderungen zu implementieren. Sie können auch einen benutzerdefinierten RadioButton implementieren. Wenn benutzerdefinierte Komponenten definiert sind, können Einschränkungen von Standardkomponenten einfacher erweitert und umgangen werden.

Ich habe den Prozess der Erstellung einer benutzerdefinierten RadioGroup und eines benutzerdefinierten RadioButton in dieses Tutorial . Außerdem habe ich meinen Code zu Github hochgeladen.

    
CROSP 14.06.2017 06:24
quelle
0

Antwort von @Junior Buckeridge hat für mich gearbeitet. Ich möchte nur meine 2 Cent dazu hinzufügen. Falls Sie anklickbare Ansichten in Ihrem linearen Layout haben, stellen Sie sicher, dass Sie hinzufügen        android: demcendantFocusability="blocksDescendants" zu Ihrem linearen Layout und         android: focusable="false" zu Ihrer Ansicht (Kann eine Taste, Radio Button usw. sein)

    
Prakash 01.06.2016 15:31
quelle