Impossible de modifier la couleur du bouton radio sur Android

J'utilise Android Studio. Je dois changer la couleur du bouton de radio, après avoir changé la valeur de la couleur de la teinte de bouton à celle dont j'ai besoin, cela fonctionne sur l'aperçu, mais chaque fois que je lance l'application sur un périphérique, le bouton est la couleur standard verte / bleu.

Est-ce un problème de niveau API de l'appareil? Dans l'affirmative, est-il possible de changer la couleur pour les périphériques plus anciens?

  • Les BroadcastReceivers d'Android ont-ils commencé dans un nouveau fil?
  • API côté serveur pour applications mobiles
  • Comment supprimer une ressource de chaîne inutilisée pour toutes les configurations dans Android Studio?
  • Impossible d'obtenir un client d'usine de connexion
  • Java.lang.NoSuchMethodError: Aucune méthode statique setOnApplyWindowInsetsListener
  • Où puis-je trouver la configuration checkstyle pour le style de codage Android?
  • Comment configurer correctement AdMob en utilisant IntelliJ IDEA?
  • Est-il possible d'avoir des icônes sur les onglets de la barre d'action pour Android?
  • Comment aligner les vues au milieu de la ligne de base d'une autre vue?
  • Stratégie de licence Android pour la publication sur Google Play et Amazon App Store
  • Implémente OAuth2 avec les identifiants de mot de passe du propriétaire de la ressource sur Android
  • Eclipse Android Change API Level
  • 8 Solutions collect form web for “Impossible de modifier la couleur du bouton radio sur Android”

    Après avoir lu la réponse de @ Ranjith, j'ai fait un petit creusement et cela semblait fonctionner. Ajoutez-le simplement à votre AppTheme.

    //red is the color of the pressed state and activated state <item name="colorControlActivated">@android:color/holo_red_light</item> //black is the color of the normal state <item name="colorControlNormal">@android:color/black</item> 

    Ma question est de savoir comment faites-vous cela par programmation, car j'ai des boutons radio dynamiques?

     RadioButton raPrivate = (RadioButton) layout.findViewById(R.id.radioPrivate); int textColor = Color.parseColor(#000000); raPrivate.setButtonTintList(ColorStateList.valueOf(textColor)); 

    Cela peut se faire de deux façons (pour supporter pré-Lollipop):

    1. Utilisez AppCompatRadioButton :

       AppCompatRadioButton radioButton; // now use following methods to set tint colour radioButton.setSupportButtonTintMode(); radioButton.setSupportButtonTintList(); 
    2. Appliquez ceci comme style à votre RadioButton dans votre XML:

       <style name="RadioButton.Login" parent="Widget.AppCompat.CompoundButton.RadioButton"> <item name="android:textColor">@android:color/white</item> <item name="buttonTint">@android:color/white</item> </style> 

    Si vous souhaitez modifier la couleur, mais ne modifiez pas colorControlActivated et colorControlNormal pour l'ensemble de l'application, vous pouvez remplacer votre apptheme uniquement pour le bouton radio en créant un nouveau style:

     <android.support.v7.widget.AppCompatRadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:theme="@style/RadioButtonTheme" android:id="@+id/radioButton"/> <style name="RadioButtonTheme" parent="@style/AppTheme"> <item name="colorControlActivated">@color/colorAccent</item> <item name="colorControlNormal">@color/colorPrimaryDark</item> </style> 

    En supposant que vous utilisez appcompat dans votre application, ajoutez simplement ci-dessous dans styles.xml

     <item name="colorAccent">@color/blue</item> 

    Maintenant, blue colorAccent sera configuré, modifiez simplement la couleur voulue.

    Par exemple, le style.xml complet

     <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/accent_material_dark</item> <item name="colorPrimaryDark">@color/accent_color_dark</item> <item name="colorAccent">@color/accent_color</item> <item name="windowActionBar">false</item> </style> </resources> 

    Pas besoin de style supplémentaire. Android prend en charge via xml. Ajoutez simplement android: buttonTint = "@ color / yourColor" dans votre bouton radio.

    Par exemple,

     <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:buttonTint="@color/red" android:text="Upload" android:textColor="@color/text_dark_gray" android:textSize="14sp" /> 

    J'ai fait de cette façon:

    Capture d'écran

    Entrez la description de l'image ici

    Activity_main.xml

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".MainActivity" tools:showIn="@layout/app_bar_main"> <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content"> </RadioGroup> </RelativeLayout> 

    MainActivity.java

     public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup); /** * First Radio Buttonn */ RadioButton radioButtonAndroid = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null); radioButtonAndroid.setText("Hello Android"); radioGroup.addView(radioButtonAndroid); /** * Second Radio Buttonn */ RadioButton radioButtonIos = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null); radioButtonIos.setText("Hello Ios"); radioGroup.addView(radioButtonIos); } } 

    Custom_radiobutton.xml

     <?xml version="1.0" encoding="utf-8"?> <RadioButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:buttonTint="@color/colorPrimary" android:text=""> </RadioButton> 

    J'espère que ceci vous aidera.

     //red is the color of the pressed state and activated state <item name="colorControlActivated">@android:color/holo_red_light</item> //black is the color of the normal state <item name="colorControlNormal">@android:color/black</item> 

    De: user2968401

    Une fois que vous avez différents styles pour le bouton radio, vous pouvez les échanger en les attribuant à un nouveau bouton radio avec le style déjà défini sur le nouveau style:

     (RadioButton)layout.findViewById(R.id.radioButton) = new RadioButton(this, null, R.style.RadioButton_style); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.