Ich möchte die Farbe des Kreises von RadioButton in einem meiner Projekte ändern. Ich konnte nicht verstehen, welche Eigenschaft festgelegt werden soll. Die Hintergrundfarbe, die ich habe, ist schwarz, so dass es unsichtbar wird. Ich möchte die Farbe des Kreises auf Weiß setzen.
android
android-radiobutton
Amandeep Singh
quelle
quelle
Antworten:
Einfacher, stellen Sie einfach die Farbe buttonTint ein: (funktioniert nur auf API-Level 21 oder höher)
Geben Sie in Ihre Werte / Farben.xml Ihre Farbe in diesem Fall rötlich ein:
Ergebnis:
Wenn Sie dies per Code tun möchten (auch API 21 und höher):
quelle
control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);
wocontrol
sich das Steuerelement befindet, das Sie den Farbton ändern möchten, undcolor
ein ganzzahliger Wert der gewünschten Farbe ist, z. B.R.color.red
android.R.attr.state_checked
und die Farbe hinzufügen.Update: 1. Verwenden Sie stattdessen dieses
2. Fügen Sie diese Zeile dann in das übergeordnete Layout oder
Alt + Enter
in Android Studio ein, um sie automatisch hinzuzufügenxmlns:app="http://schemas.android.com/apk/res-auto"
Das Mindestbeispiel sollte folgendermaßen aussehen:
3. Sollte in Ihrem Programm so aufrufen.
AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
Grundsätzlich kann diese Art von Muster für alle AppCompact-Typen wie AppCompatCheckBox, AppCompatButton usw. angewendet werden.
Alte Antwort:
Um die unten stehende Android API 21 zu unterstützen, können Sie AppCompatRadioButton verwenden. Verwenden Sie dann die
setSupportButtonTintList
Methode, um die Farbe zu ändern. Dies ist mein Code-Snippet zum Erstellen eines Optionsfelds.Testergebnis bei API 19:
Weitere Informationen finden Sie unter dem Android- Referenzlink .
quelle
<android.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
ist eine private Methode, die Sie nicht verwenden sollen. Die Optionsfelder verhalten sich bei bestimmten Android-Versionen merkwürdig. Verwenden Sie stattdessenCompoundButtonCompat.setButtonTintList(rb, colorStateList)
.quelle
Arbeiten an API vor 21 sowie nach 21. In Ihrem
styles.xml
Put:Ihre
radio button
in XML sollte aussehen wie:Jetzt müssen Sie nur noch ein
radiobutton_drawable.xml
in Ihrem machendrawable folder
. Folgendes müssen Sie einfügen:Ihr
radio_unchecked.xml
:Ihr
radio_checked.xml
:Ersetzen Sie einfach durch
@color/colorAccent
die Farbe Ihrer Wahl.quelle
Sie müssen diesen Code verwenden:
Verwenden
app:buttonTint
anstelle vonandroid:buttonTint
und auchandroid.support.v7.widget.AppCompatRadioButton
anstelle vonRadiobutton
!quelle
Deklarieren Sie einen benutzerdefinierten Stil in Ihrer Datei styles.xml.
Wenden Sie diesen Stil über das Attribut android: theme auf Ihren RadioButton an.
Nur wenn sich Ihre Aktivität erstreckt
AppCompatActivity
quelle
<item name="android:colorControlActivated">@color/pink</item>
, um für mich zu arbeiten. Ich bin mir immer noch nicht sicher warum. Ansonsten ist dies eine gute Antwort.Für unter API 21
Erstellen Sie einen benutzerdefinierten Stil RadioButton style.xml
Verwenden Sie im Layout das Thema:
Für API 21 und mehr
Verwenden Sie einfach buttonTint
quelle
Die Frage ist alt, aber ich denke, meine Antwort wird den Menschen helfen. Sie können die Farbe des deaktivierten und aktivierten Status des Optionsfelds ändern, indem Sie den Stil in XML verwenden.
In style.xml
Sie können die gewünschten Farben in diesem Stil einstellen.
quelle
Legen Sie die
buttonTint
Eigenschaft fest. Zum Beispielandroid:buttonTint="#99FF33"
.quelle
Ich habe es so kurz gemacht (Arbeiten an API vor 21 sowie nach 21)
Ihr Optionsfeld in XML sollte so aussehen
in radiodraw.xml
Sie müssen eine transparente Farbe hinzufügen, um den deaktivierten Status zu zeichnen. Andernfalls wird ein festes schwarzes Oval gezeichnet.
quelle
Manchmal müssen Sie colorControlNormal einfach so überschreiben :
Und Sie erhalten einen Knopf wie diesen:
colorControlNormal wird für den deaktivierten Status und colorAccent für den aktivierten Status verwendet .
quelle
Es gibt ein XML-Attribut dafür:
quelle
"Make sure your min API is higher then 21 or this won't work"
das ist falsch. Ich ziele auf API 17 mit AndroidX ab und dies ist das einzige, was für mich funktioniert hatFür diejenigen, die den deaktivierten, aktivierten und aktivierten Status ändern möchten, führen Sie die folgenden Schritte aus:
Erstellen Sie dann im Ordner "color res" eine Datei mit dem Namen "radio_button_color.xml":
quelle
Alle Schaltflächen ändern die Farbe, das Kreisfeld und das zentrale Häkchen.
quelle
RadioButton verwendet standardmäßig die Farbe colorAccent in der Datei res / values / color.xml. Gehen Sie also zu dieser Datei und ändern Sie den Wert von
<color name="colorAccent">#3F51B5</color>
auf die gewünschte Farbe.
quelle
Am einfachsten ist es, die
colourAccent
Farbe zu ändern. Beachten Sievalues->colours.xml
jedoch, dass sich auch andere Dinge wie das Bearbeiten der Textcursorfarbe usw. ändern.
< color name="colorAccent">#75aeff</color >
quelle
Wenn Sie eine andere Farbe für angeklickte und nicht angeklickte Optionsfelder festlegen möchten, verwenden Sie einfach:
quelle
Verwenden Sie einfach das
android:buttonTint="@color/colorPrimary"
Attribut für das Tag und hoffen Sie, dass es hilftquelle
Ich hatte dieses Problem. Wenn Ihre App einen schwarzen Hintergrund hat und Sie viele RadioButtons haben, die aufgrund des Hintergrunds unsichtbar sind, ist es kompliziert, den android: buttonTint jedes einzelnen zu bearbeiten. Die beste Lösung besteht darin, das übergeordnete Thema in Ihrer Datei styles.xml zu ändern
ich habe mich verändert
zu
So wurden die Kreise der RadioButtons heller und jetzt auch mit schwarzem Hintergrund sichtbar.
Dies ist meine style.xml-Datei:
quelle
@ jh314 ist korrekt. In AndroidManifest.xml
In style.xml
Der Elementname muss colorAccent sein. Er bestimmt die Standardfarbe der Widgets der Anwendung.
Wenn Sie jedoch die Farbe im Code ändern möchten, ist die Antwort von Vielleicht @ aknay richtig.
quelle