web-dev-qa-db-fra.com

Changer la couleur du cercle du bouton radio

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.

132
Amandeep Singh

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:

Colored Android Radio Button

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
}
228
Jorge Arimany

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:

This one is tested on API 19

Voir le Android lien de référence pour plus de détails.

153
aknay
<Android.support.v7.widget.AppCompatRadioButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />
73
IgorOliveira

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.

47
Vaibhav Sharma

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!

17
srt

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.

11
Jaura

Définissez la propriété buttonTint. Par exemple, Android:buttonTint="#99FF33".

9
Sandy

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" />
7
Rasoul Miri

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.

7
Hatem Badawi

Il y a un attribut xml pour cela:

Android:buttonTint="yourcolor"
6
thelearner

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:

enter image description here

colorControlNormal utilisé pour l'état non vérifié et colorAccent pour coché.

5
Nosov Pavel
  1. 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>  
    
  2. 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

5
batsheva

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.

1
Velmurugan V
<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.

1
texeratx

il suffit d'utiliser l'attribut Android:buttonTint="@color/colorPrimary" sur la balise, j'espère que cela aidera

0
Cevin Ways

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 >

0
Manohar Reddy

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"/>
0
anju jo