telephone - android wiki




Changer la couleur du cercle du bouton radio- Android (11)

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

    uniquement si votre activité étend AppCompatActivity

Je veux changer la couleur du cercle de bouton radio, je ne pouvais pas comprendre quelle propriété à définir. La couleur de fond que je suis noir est donc il devient invisible.Je veux définir la couleur du cercle au blanc.


@ jh314 est correct. Dans AndroidManifest.xml,

 <application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"></application>

En 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étermine 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.


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


Il y a un attribut xml pour cela:

android:buttonTint="yourcolor"

La question est ancienne mais je pense que ma réponse aidera les gens. Vous pouvez changer 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" />

En 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.


Le moyen le plus simple est de changer la couleur de la values->colours.xml dans les values->colours.xml
mais sachez que cela va aussi changer d'autres choses comme modifier la couleur du curseur du texte, etc.

< color name="colorAccent">#75aeff</color >


Plus simple, il suffit de régler la couleur buttonTint: (ne fonctionne que sur les niveaux 21 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 vos valeurs / 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
}

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.


Mise à jour: 1. utiliser 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 dans la mise en page parente ou Alt + Enter dans Android Studio pour 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 ça. 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 et ainsi de suite.

Ancienne réponse:

Afin de soutenir ci-dessous API Android 21, vous pouvez utiliser AppCompatRadioButton. Utilisez setSupportButtonTintList méthode setSupportButtonTintList 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.


Travailler sur API pré 21 ainsi que 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 en XML devrait ressembler à:

<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 faire 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>

Remplacez simplement @color/colorAccent par la couleur de votre choix.


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




android