Je veux changer la couleur du cercle de RadioButton , je ne pouvais pas comprendre quelle propriété définir. La couleur de fond que je rencontre est le noir, ce qui le rend invisible. Je veux définir la couleur du cercle en blanc.
Plus simple, il suffit de définir la couleur de buttonTint: (ne fonctionne que sur les API de niveau 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 fichier values / colors.xml, mettez votre couleur dans ce cas une couleur rougeâtre:
<color name="your_color">#e75748</color>
Résultat:
Si vous voulez le faire par code (aussi api 21 et plus):
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
}
Mise à jour: 1. utilisez celui-ci à la place
<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 à la disposition parente ou à Alt + Enter
dans Android Studio pour ajouter automatiquement xmlns:app="http://schemas.Android.com/apk/res-auto"
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 Android API 21, vous pouvez utiliser AppCompatRadioButton. Ensuite, utilisez la méthode setSupportButtonTintList
pour modifier 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 Android lien de référence pour plus de détails.
<Android.support.v7.widget.AppCompatRadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
Travailler sur les API pré 21 et post 21. Dans votre styles.xml
put:
<!-- 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
au format xml devrait ressembler à ceci:
<RadioButton
Android:layout_width="wrap_content"
style="@style/radionbutton"
Android:checked="false"
Android:layout_height="wrap_content"
/>
Maintenant, tout ce que vous avez à faire est de créer un radiobutton_drawable.xml
dans votre 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>
Il suffit de remplacer @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
ainsi que Android.support.v7.widget.AppCompatRadioButton
au lieu de Radiobutton
!
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 style in 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 propriété buttonTint
. Par exemple, Android:buttonTint="#99FF33"
.
Pour sous API 21
Créez 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 le thème de mise en page:
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:theme="@style/RadioButton" />
Pour API 21 et plus
Il suffit d'utiliser buttonTint
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:buttonTint="@color/green" />
Je l'ai fait court comme ça (Travailler sur API pré 21 ainsi que post 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>
doit ajouter de la couleur transparente pour dessiner le statut non vérifié, sinon il dessine un ovale noir uni.
Il y a un attribut xml pour cela:
Android:buttonTint="yourcolor"
Parfois, il vous suffit de remplacer colorControlNormal comme suit:
<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 coché.
Déclarez le 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 bouton RadioButton via Android: attribut de thème.
<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
RadioButton prend par défaut la couleur de colorAccent dans le fichier res/values / colors.xml. Alors allez dans ce fichier et changez la valeur de
<color name="colorAccent">#3F51B5</color>
à la couleur que vous voulez.
<RadioButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio"
Android:buttonTint="@color/my_color"/>
Tous les boutons changeront de couleur, la boîte de cercle et le contrôle central.
il suffit d'utiliser l'attribut Android:buttonTint="@color/colorPrimary"
sur la balise, j'espère que cela aidera
Le moyen le plus simple est de changer la couleur colourAccent
dans values->colours.xml
mais sachez que cela changera aussi d'autres choses comme la modification de 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"/>