Ich versuche, Radiobutton-Effekt für normale Tasten in Android zu bekommen
Ich habe unten ein einfaches Android-Optionsfeld
Code dafür ist ::
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton1" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton2" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton3" />
</RadioGroup>
</RelativeLayout>
So passen Sie es wie folgt an:
Danke !
[BEARBEITEN] mit Code aus einer der Antworten
Der Schaltflächenname wird jedoch von der Auswahloption überschattet, wie er entfernt werden soll.
{EDIT} weitere Änderungen
Letzte Änderungen sollten mindestens ich sollte wissen, welche Schaltfläche ich aus drei Optionsfeldern ausgewählt habe .... ist es möglich, wie unten zu erhalten?
Antworten:
Fügen Sie einen Hintergrund hinzu, der auf ein Bild oder einen Selektor (wie unten) verweist, und machen Sie die Schaltfläche transparent:
Wenn Sie möchten, dass Ihre Optionsfelder beim Aktivieren eine andere Ressource haben, erstellen Sie einen Auswahlhintergrund, der gezeichnet werden kann:
res / drawable / yourbuttonbackground.xml
Im obigen Selektor verweisen wir auf zwei Drawables,
a
undb
so erstellen wir sie:res / drawable / a.xml - Ausgewählter Status
res / ziehbar / b.xml - Regelmäßige staatliche
Weitere Informationen zu Drawables finden Sie hier: http://developer.android.com/guide/topics/resources/drawable-resource.html
quelle
android:button="@android:color/transparent"
, um es zu entfernen.Ich habe die akzeptierte Antwort aktualisiert und unnötige Dinge entfernt.
Ich habe XML für das folgende Bild erstellt.
Ihr XML- Code für
RadioButton
lautet:radio_flat_selector.xml
für Hintergrundauswahl:radio_flat_selected.xml
für ausgewählte Schaltfläche:radio_flat_regular.xml
für regulären Selektor:Alle oben genannten 3 Dateicodes befinden sich im
drawable/
Ordner.Jetzt brauchen wir auch die
Text
Farbauswahl, um die Farbe des Textes entsprechend zu ändern.radio_flat_text_selector.xml
für Textfarbenauswahl(Verwenden Sie den
color/
Ordner für diese Datei.)Hinweis: Ich habe viele Antworten für diese Art von Lösung referiert, aber keine gute Lösung gefunden, also mache ich es.
Hoffe es wird dir hilfreich sein.
Vielen Dank.
quelle
Verwenden Sie dasselbe XML-Dateiformat aus Evans Antwort, aber eine zeichnbare Datei ist alles, was Sie zum Formatieren benötigen.
Und Ihre separate Zeichnungsdatei:
quelle
Das Einstellen
android:background
undandroid:button
des RadioButton wie die akzeptierte Antwort hat bei mir nicht funktioniert. Das zeichnbare Bild wurde als Hintergrund (obwohlandroid:button
auf transparent gesetzt wurde) zum Optionsfeldtext als angezeigtso gab radiobutton als benutzerdefinierte zeichnbare radiobuttonstyle.xml
und radiobuttonstyle.xml ist wie folgt
und danach funktionierte der Radiobutton mit benutzerdefiniertem Button-Stil.
quelle
Sie müssen das Attribut "Button" der Klasse "CompoundButton" mit einem XML-Zeichenpfad ( my_checkbox ) füllen . In der XML-Zeichnung müssen Sie Folgendes haben:
Vergessen Sie nicht, my_checkbox durch Ihren Dateinamen des zu ziehenden Kontrollkästchens zu ersetzen, checkbox_not_checked durch Ihr PNG drawable, das Ihr Kontrollkästchen ist, wenn es nicht aktiviert ist, und checkbox_checked mit Ihrem Bild, wenn es aktiviert ist .
Aktualisieren Sie für die Größe direkt die Layoutparameter.
quelle
android:background
vs the anzuwendenandroid:button
. dann deklarieren dieandroid:button
als transparent. Auf diese Weise kann der Text innerhalb der Schaltfläche sitzen.Um das Standard- Optionsfeld auszublenden, würde ich vorschlagen, das Symbol zu entfernen, anstatt es transparent zu machen, da alle visuellen Rückmeldungen vom zeichnbaren Hintergrund verarbeitet werden:
Es ist auch besser, Stile zu verwenden, da es mehrere Optionsfelder gibt:
Sie benötigen auch den Seslyn customButtonBackground zum Zeichnen .
quelle
Der beste Weg, um benutzerdefinierte Zeichen hinzuzufügen, ist:
Die Schattenüberlagerung durch benutzerdefiniertes Zeichnen wird hier entfernt.
quelle
background
. Wenn Sie den Hintergrund festlegen, können Sie dem RadioButton keinen Text hinzufügen und müssen Ihre eigene TextViewEinfacher Weg, versuchen Sie dies
Erstellen Sie ein neues Layout in einem zeichnbaren Ordner und nennen Sie es custom_radiobutton (Sie können es auch umbenennen).
Verwenden Sie dies in Ihrer Layoutaktivität
quelle
Der folgende Code ist ein Beispiel für ein benutzerdefiniertes Optionsfeld. Befolgen Sie die folgenden Schritte.
XML-Datei.
2. Fügen Sie die benutzerdefinierte XML-Datei für die Optionsfelder hinzu
2.1.andere zeichnbar
custom_other_button.xml
2.2.Frauen zeichnbar
custom_female_button.xml
2.3. männlich ziehbar
custom_radio_button.xml
quelle
Mir ist klar, dass dies eine verspätete Antwort ist, aber wenn ich durch developer.android.com schaue, scheint es, dass die Umschalttaste ideal für Ihre Situation ist.
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
Und natürlich können Sie auch die anderen Vorschläge verwenden, um einen Hintergrund zu zeichnen, um einen gewünschten benutzerdefinierten Look zu erhalten.
Wenn Sie nun mit Ihrer endgültigen Bearbeitung beginnen und einen "Halo" -Effekt um Ihre Schaltflächen erzielen möchten, können Sie dazu einen anderen benutzerdefinierten Selektor verwenden.
quelle