201 votes

Changez la couleur du cercle du bouton radio

Je veux changer la couleur du cercle de Bouton radio en un de mes projets mais je n'ai pas compris quelle propriété il fallait définir. La couleur de l'arrière-plan est noire, ce qui le rend invisible. Je veux définir la couleur du cercle en blanc.

360voto

Jorge Arimany Points 11

Il est plus simple de définir la couleur du buttonTint (fonctionne uniquement avec le niveau 21 de l'API ou plus) :

<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 valeurs/couleurs.xml mettez votre couleur, dans ce cas un rougeâtre :

<color name="your_color">#e75748</color>

Résultat :

Colored Android Radio Button

Si vous voulez le faire par code (également 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
}

174voto

aknay Points 121

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 ajouter automatiquement xmlns:app="http://schemas.android.com/apk/res-auto"

A 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>
  1. Dans votre programme, vous devez l'appeler comme ceci : AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);

Fondamentalement, ce type de modèle peut être appliqué à tous les types d'AppCompact tels que AppCompatCheckBox, AppCompatButton, et ainsi de suite.

Vieille réponse :

Afin de prendre en charge les fonctions inférieures à l'API 21 d'Android, vous pouvez utiliser la fonction AppCompatRadioButton. Ensuite, utilisez setSupportButtonTintList pour changer la couleur. Voici 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 l'Android lien de référence pour plus de détails.

80voto

IgorOliveira Points 101
<android.support.v7.widget.AppCompatRadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />

58voto

Vaibhav Sharma Points 1447

Cela fonctionne sur l'API pré 21 ainsi que post 21.

Dans votre styles.xml mettre :

<!-- 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 bouton radio en 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 devez 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 fichier :

<?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 fichier :

<?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 avec la couleur de votre choix.

37voto

batsheva Points 525
  1. Déclarez un style personnalisé dans votre styles.xml fichier.

     <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 RadioButton par le biais de la fonction Android:thème attribut.

     <RadioButton
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:checked="true"
         android:text="Radio Button"
         android:theme="@style/MyRadioButton"/>

Mais seulement si votre activité s'étend AppCompatActivity .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X