web-dev-qa-db-fra.com

Comment changer de case à cocher cocher la couleur dans Android

Je développe une application Android dans laquelle j'utilise la case à cocher, mais la case à cocher par défaut de la case à cocher est bleue; je souhaite donc changer cette couleur en jaune. existe-t-il une propriété intégrée pour définir la couleur sur la case à cocher?.

25
Atul K

Malheureusement, changer la couleur de la case à cocher n'est pas un simple attribut

Créez un fichier XML de sélecteur dans le dossier res\drawables\ avec le nom cb_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_checked="true" Android:drawable="@drawable/checked" />
    <item Android:state_checked="false" Android:drawable="@drawable/unchecked" />
</selector>

Dans votre fichier de mise en page, appliquez ce fichier à votre checkBox. 

<CheckBox
    Android:id="@+id/cb"
    Android:text="My CheckBox"
    Android:button="@drawable/cb_selector"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"/>

Ajoutez un unchecked.png et un checked.png dans votre dossier drawables. Celles-ci sont cochées et non cochées image de case à cocher.

34
Vaibhav Agarwal

Vous pouvez le faire sans changer le dessin à l’aide de buttonTint (à partir de l’API 23):

<CheckBox
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:buttonTint="@color/CHECKMARK_COLOR_HERE" />

ou utilisez AppCombatCheckBox pour les anciennes versions d'Android/compatibilité.

<Android.support.v7.widget.AppCompatCheckBox 
    Android:layout_width="wrap_content" 
    Android:layout_height="wrap_content" 
    app:buttonTint="@color/CHECKMARK_COLOR_HERE" /> 
53
afathman

Vous pouvez utiliser l'attribut app:buttonTint de la AppCompatCheckBox de la bibliothèque Android.support.v7. 

<Android.support.v7.widget.AppCompatCheckBox
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:buttonTint="@color/colorAccent"/>

Avantage: fonctionne également sous l'API 21 et vous n'avez pas besoin de redessiner la case à cocher.

8
dabo

A partir de l'API 21, vous pouvez utiliser l'attribut Button Tint.

Android:buttonTint="#FFFF00"
3
Chris Stillwell

Allez à styles.xml et ajoutez cette ligne.

<style>
<item name="colorAccent">@Android:color/holo_green_dark</item> 
</style>

en utilisant cela, vous pouvez changer de couleur ou définir une couleur différente

2
Yogesh Rathi

Pour ceux qui cherchent encore une réponse (je sais que c'est une question plus ancienne) - J'ai trouvé cette solution qui fonctionne bien sans avoir à vous soucier de l'API: https://stackoverflow.com/a/31840734/7601437

En bref: créez un style pour la case à cocher, par exemple checkboxStyle puis l'implémenter en tant que thème: Android:theme="@style/checkboxStyle"

0
atschpe

Utilisez le sélecteur personnalisé pour la case à cocher.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@drawable/patch_pressed" Android:state_pressed="true"/>
    <item Android:drawable="@drawable/patch_normal" Android:state_enabled="true"/>
    <item Android:drawable="@drawable/patchdisable" Android:state_enabled="false"/>


</selector>

Comme ça.

0
Ashwin S Ashok