application - Changer la couleur du cercle du bouton radio-Android




version wiki (14)

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 coché, sinon il dessine un ovale noir solide.

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.


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


Parfois, vous avez juste besoin de surcharger 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 coché et colorAccent pour vérifié.


<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:buttonTint="@color/my_color"/>

Tout le bouton changera de couleur, la boîte de cercle et la vérification centrale.


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.


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

En utilisant app:buttonTint au lieu d' android:buttonTint et aussi android.support.v7.widget.AppCompatRadioButton au lieu de Radiobutton !


Il y a un attribut xml pour cela:

android:buttonTint="yourcolor"

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 >


<android.support.v7.widget.AppCompatRadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buttonTint="@color/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.


@ 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ès l’API 21 (le premier SDK Android 5.0 / Lollipop) , il détecte si l’application Goat Simulator est installée:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}

Cela devrait indiquer clairement que la suggestion de djechlin de l'utiliser comme un système sans avertissement if (false) est une stratégie potentiellement désastreuse. Ce qui était précédemment renvoyé par false pour chaque périphérique renvoie maintenant une valeur apparemment aléatoire: si cela était enfoui suffisamment profondément dans votre code, il pourrait prendre beaucoup de temps pour déterminer la provenance de vos nouveaux bogues.

En bout de ligne: si vous ne contrôlez pas la mise en œuvre d'une méthode et décidez de l'utiliser à des fins autres que celles indiquées dans la documentation de l'API, vous vous dirigez vers des problèmes.





android