Je souhaite changer la couleur du cercle de RadioButton dans l'un de mes projets , je ne comprenais pas quelle propriété définir. La couleur de fond que j'ai est noire, donc elle devient invisible. Je souhaite définir la couleur du cercle sur blanc.
Je souhaite changer la couleur du cercle de RadioButton dans l'un de mes projets , je ne comprenais pas quelle propriété définir. La couleur de fond que j'ai est noire, donc elle devient invisible. Je souhaite définir la couleur du cercle sur blanc.
Réponses:
Plus simple, il suffit de définir le bouton Couleur de la teinte: (fonctionne uniquement au niveau de l'API 21 ou supérieur)
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
dans votre values / colors.xml mettez votre couleur dans ce cas une couleur rougeâtre:
<color name="your_color">#e75748</color>
Résultat:
Si vous souhaitez le faire par code (également api 21 et supérieur):
if(Build.VERSION.SDK_INT>=21)
{
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_enabled}, //disabled
new int[]{android.R.attr.state_enabled} //enabled
},
new int[] {
Color.BLACK //disabled
,Color.BLUE //enabled
}
);
radio.setButtonTintList(colorStateList);//set the color tint list
radio.invalidate(); //could not be necessary
}
control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);
où control
est le contrôle que vous voulez changer la teinte et color
est une valeur entière de la couleur que vous voulez, par exempleR.color.red
android.R.attr.state_checked
et ajouter la couleur.
Mise à jour: 1. utilisez plutôt celui-ci
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/rbtn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
2. Ajoutez ensuite cette ligne dans la mise en page parent ou Alt + Enter
dans Android Studio pour l'ajouter automatiquement
xmlns:app="http://schemas.android.com/apk/res-auto"
L'exemple minimum devrait ressembler à ceci:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/rbtn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
</LinearLayout>
3. Dans votre programme, devrait appeler comme ceci.
AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
Fondamentalement, ce type de modèle peut être appliqué à tous les types AppCompact tels que AppCompatCheckBox, AppCompatButton, etc.
Ancienne réponse:
Afin de prendre en charge ci-dessous l'API Android 21, vous pouvez utiliser AppCompatRadioButton. Ensuite, utilisez la setSupportButtonTintList
méthode pour changer la couleur. Ceci est mon extrait de code pour créer un bouton radio.
AppCompatRadioButton rb;
rb = new AppCompatRadioButton(mContext);
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
},
new int[]{
Color.DKGRAY
, Color.rgb (242,81,112),
}
);
rb.setSupportButtonTintList(colorStateList);
Résultat testé à l'API 19:
Voir le lien de référence Android pour plus de détails.
<android.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
est une méthode privée que vous n'avez pas l'intention d'utiliser. Les boutons radio se comportent bizarrement sur certaines versions d'Android. Utilisez plutôt CompoundButtonCompat.setButtonTintList(rb, colorStateList)
.
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
Travailler sur l'API avant 21 et après 21.
Dans votre article styles.xml
:
<!-- custom style -->
<style name="radionbutton"
parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:button">@drawable/radiobutton_drawable</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
Votre radio button
in xml devrait ressembler à:
<RadioButton
android:layout_width="wrap_content"
style="@style/radionbutton"
android:checked="false"
android:layout_height="wrap_content"
/>
Il ne vous reste plus radiobutton_drawable.xml
qu'à créer un fichier drawable folder
. Voici ce que vous devez y mettre:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="true"/>
<item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="false"/>
<item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="true"/>
<item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="false"/>
</selector>
Votre radio_unchecked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="30dp" android:height="30dp"/>
</shape>
Votre radio_checked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<stroke android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="30dp" android:height="30dp"/>
</shape>
</item>
<item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
<shape android:shape="oval">
<solid android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="10dp" android:height="10dp"/>
</shape>
</item>
</layer-list>
Remplacez simplement @color/colorAccent
par la couleur de votre choix.
Vous devez utiliser ce code:
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:text="Radiobutton1"
app:buttonTint="@color/black" />
Utiliser app:buttonTint
au lieu de android:buttonTint
et aussi android.support.v7.widget.AppCompatRadioButton
au lieu de Radiobutton
!
Déclarez un style personnalisé dans votre fichier styles.xml.
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
Appliquez ce style à votre RadioButton via l'attribut android: theme.
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio Button"
android:theme="@style/MyRadioButton"/>
seulement si votre activité s'étend AppCompatActivity
<item name="android:colorControlActivated">@color/pink</item>
pour que cela fonctionne pour moi. Je ne sais toujours pas pourquoi. Sinon, c'est une bonne réponse.
Pour sous API 21
Créer un style personnalisé RadioButton style.xml
<style name="RadioButton" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/green</item>
<item name="android:textColorSecondary">@color/mediumGray</item>
<item name="colorControlNormal">@color/red</item>
</style>
Dans la mise en page, utilisez le thème:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButton" />
Pour API 21 et plus
Utilisez simplement buttonTint
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/green" />
La question est ancienne mais je pense que ma réponse aidera les gens. Vous pouvez modifier la couleur de l'état non coché et coché du bouton radio en utilisant le style en xml.
<RadioButton
android:id="@+id/rb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButtonStyle" />
Dans style.xml
<style name="RadioButtonStyle" parent="Theme.AppCompat.Light">
<item name="colorAccent">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
Vous pouvez définir les couleurs souhaitées dans ce style.
Définissez la buttonTint
propriété. Par exemple android:buttonTint="#99FF33"
,.
Je l'ai fait court comme ça (Travailler sur l'API avant 21 ainsi que après 21)
Votre bouton radio en XML devrait ressembler à ceci
<RadioButton android:id="@+id/radioid"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:button="@drawable/radiodraw" />
dans radiodraw.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" >
<shape android:shape="oval" >
<stroke android:width="1dp" android:color="#000"/>
<size android:width="30dp" android:height="30dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="oval">
<stroke android:width="1dp" android:color="#000"/>
<size android:width="30dp" android:height="30dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
<shape android:shape="oval">
<solid android:width="1dp" android:color="#000"/>
<size android:width="10dp" android:height="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
devez ajouter une couleur transparente pour dessiner l'état non coché; sinon, il dessine un ovale noir uni.
Parfois, il vous suffit de remplacer colorControlNormal comme ceci:
<style name="RadioButtonStyle" parent="AppTheme">
<item name="colorControlNormal">@color/pink</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:textColorSecondary">@color/black</item>
</style>
Et vous obtiendrez un bouton comme celui-ci:
colorControlNormal utilisé pour l'état non vérifié et colorAccent pour vérifié.
Il y a un attribut xml pour cela:
android:buttonTint="yourcolor"
"Make sure your min API is higher then 21 or this won't work"
c'est faux. Je cible l'API 17 avec AndroidX et c'est la seule chose qui a fonctionné pour moi
Pour ceux qui souhaitent modifier les états de désactivation, coché et activé, procédez comme suit:
<!-- Or androidX radio button or material design radio button -->
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:text="Radiobutton1"
app:buttonTint="@color/radio_button_color" />
puis dans le dossier color res, créez un fichier nommé "radio_button_color.xml":
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow900" android:state_selected="true" />
<item android:color="@color/yellow800" android:state_checked="true" />
<item android:color="@color/gray800" android:state_enabled="false" />
<item android:color="@color/yellow800" android:state_enabled="true" />
</selector>
RadioButton prend par défaut la couleur de colorAccent dans le fichier res / values / colors.xml. Allez donc dans ce fichier et modifiez la valeur de
<color name="colorAccent">#3F51B5</color>
à la couleur souhaitée.
Le moyen le plus simple est de changer la colourAccent
couleur, values->colours.xml
mais sachez que cela changera également d'autres choses comme modifier la couleur du curseur de texte, etc.
< color name="colorAccent">#75aeff</color >
Si vous souhaitez définir une couleur différente pour le bouton radio cliqué et non cliqué, utilisez simplement:
android:buttonTint="@drawable/radiobutton" in xml of the radiobutton and your radiobutton.xml will be:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#1E88E5"/>
<item android:state_checked="true" android:color="#00e676"/>
<item android:color="#ffffff"/>
utilisez simplement l' android:buttonTint="@color/colorPrimary"
attribut sur la balise, j'espère que cela vous aidera
J'ai eu ce problème. Si votre application a un arrière-plan noir et que vous avez beaucoup de RadioButtons invisibles à cause de l'arrière-plan, il est compliqué d'éditer le android: buttonTint de chacun, la meilleure solution est de changer le thème parent dans votre fichier styles.xml
j'ai changé
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
à
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
Ainsi, les cercles des RadioButtons sont devenus une teinte plus claire de gris et maintenant ils sont visibles même avec un fond noir.
Voici mon fichier style.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
@ jh314 est correct. Dans AndroidManifest.xml,
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"></application>
Dans style.xml
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/red</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
le nom de l'élément doit être colorAccent, il décide de la couleur par défaut des widgets de l'application.
Mais si vous voulez changer la couleur du code, la réponse de Maybe @ aknay est correcte.