Android: Définir la couleur de CheckBox

J’ai cherché un certain nombre d’endroits et ne semble pas être en mesure de trouver le tirable CheckBox pour la bordure de la case à cocher. Quelqu’un peut-il me diriger dans la bonne direction?

Voici à quoi cela ressemble sans contrôle (peut à peine voir la boîte)

entrer la description de l'image ici

Voici l’état vérifié

entrer la description de l'image ici

Voici ce que j’essaie de faire ressembler.

entrer la description de l'image ici

Vous pouvez utiliser un fichier XML de case à cocher personnalisé pour cela. Enregistrez le code xml ci-dessous dans le dossier drawables , nommez-le custom_checkbox.xml :

            

Ensuite, utilisez ce fichier comme arrière-plan de votre case à cocher comme ceci:

   

Ici, je télécharge mes propres images que j’ai utilisées à la place de cbchk_blue et cbunchk_blue

CheckBox non vérifiéCheckBox vérifié

Le même problème se produit également lorsque vous utilisez le thème Holo Dark pour Activity et le fond blanc. Donc, la case à cocher a le style Dark. Contournement simple est directement défini en arrière-plan de Holo Light d’Android:

 int id = Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android"); checkBox.setButtonDrawable(id); 

Vous pouvez trouver un bon aperçu de la façon dont toutes ces choses fonctionnent dans la réponse suivante: https://stackoverflow.com/a/10139809/1170154

Depuis Android 5 et API niveau 21, il est possible de choisir librement les couleurs des cases à cocher (et de nombreux autres widgets). Ajoutez les éléments suivants à vos values-v21/styles.xml (tout en vous assurant que vous disposez d’une solution de secours pour les API précédentes dans values/styles.xml :

   

Ensuite, il vous suffit d’appliquer le style à votre case à cocher dans votre mise en page:

  

Ça y est, les cases à cocher apparaissent dans vos couleurs préférées!

Ok, donc je suis désolé, mais la plupart de ces réponses sont incomplètes ou contiennent des bugs mineurs. Les contrôles de style sur différentes versions d’Android sont une douleur épique dans le cul. Après des journées de travail sur un projet avec des contraintes de conception très ssortingctes, je suis finalement tombé en panne et j’ai écrit une application de test pour ensuite tester et tester les différentes solutions pour les interrupteurs et les cases à cocher. il a souvent l’autre. Voici ce que j’ai trouvé …

Premièrement: vous ne pouvez pas les styliser, mais vous pouvez appliquer un thème à chacun d’entre eux ou à l’un d’entre eux.

Deuxièmement: vous pouvez tout faire à partir de XML et vous n’avez pas besoin d’une seconde valeur-v21 / styles.xml.

Troisièmement: en ce qui concerne les commutateurs, vous avez deux choix de base si vous souhaitez prendre en charge les anciennes versions d’Android (comme je suis sûr que vous le faites) …

  1. Vous pouvez utiliser un SwitchCompat et vous pourrez le faire apparaître sur toutes les plates-formes.
  2. Vous pouvez utiliser un Switch et vous pourrez le thème avec le rest de votre thème, ou tout simplement ce commutateur particulier. Sur les anciennes versions d’Android, vous verrez un ancien commutateur carré non stylé.

Ok maintenant pour le code de référence simple. Encore une fois si vous créez un simple Hello World! et laisser tomber ce code que vous pouvez jouer au contenu de votre coeur. Tout cela est la plaque chauffante ici, donc je vais juste inclure le XML pour l’activité et le style …

activity_main.xml …

  

                         

styles.xml …

        

Je sais, je sais, vous êtes trop paresseux pour construire cela, vous voulez juste que votre code soit écrit. J’ai compris. Voici à quoi ça ressemble quand vous le lancez …

API_21:

API 21

API_18:

API18

Il est spécifié par les tirables: android.R.drawable.checkbox_off_background et android.R.drawable.checkbox_on_background

Vous pouvez définir la couleur CHECKBOX comme ceci API21 & Above

android: buttonTint = “@ color / YOUR_COLOR”

  

Pour le support de la version plus ancienne, utilisez AppCompatCheckBox de la bibliothèque V7

app: buttonTint = “@ color / YOUR_COLOR”

  

Ce sera le moyen le plus efficace.

android: buttonTint = “@ color / black”