50 votes

Comment appliquer une image personnalisée à la case à cocher dans Android

J'essaie d'appliquer une image personnalisée à la case à cocher sous Android. Pour cela, je crée un fichier check_custom.xml dans lequel je définis une image personnalisée pour différents états de la case à cocher, comme:

 <item android:state_checked="true" 
      android:drawable="@drawable/btn_check_on" /> <!-- checked --> 
<item android:state_checked="false" 
      android:drawable="@drawable/btn_check_off" /> <!-- unchecked --> 
<item android:state_focused="true"
      android:drawable="@drawable/btn_check_onfocus" />    <!--on focus--> 
<item android:drawable="@drawable/btn_check_off" /> <!-- default --> 
 

Trois images différentes sur trois états activé, coché et activé, puis j'assigne ce fichier xml à l'attribut d'arrière-plan des cases à cocher, mais je n'obtiens pas le résultat requis, cette technique applique à la fois l'image personnalisée et l'image par défaut. .

102voto

DJC Points 1751

Salman, définissez android:button au lieu de android:background . Voir aussi image de case à cocher Android

22voto

harrakiss Points 416

Je n'ai pas, comme l'apparition de la case de l'image par défaut lors de la mise en page de fond est sombre, alors je l'ai changé à l'aide d'un xml sélecteur afin d'avoir un fond blanc dans le bouton.

Le sélecteur est nécessaire dans android:bouton="@drawable/selector_check"

                 <CheckBox
                            android:id="@+id/checkBox1"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:gravity="left"
                            android:text="Show password"
                            android:textColor="@color/white"
                            android:button="@drawable/selector_check"
                            >

Et ce qui suit est le contenu de "drawable/selector_check.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="@android:drawable/checkbox_on_background" /> <!-- checked --> 
          <item android:state_checked="false" 
             android:drawable="@android:drawable/checkbox_off_background" /> <!-- unchecked-->
          </selector>

Et voici le résultat:

enter image description here

5voto

Copiez le fichier btn_check.xml à partir d’android-sdk / plateformes / android - # / data / res / dans le dossier pouvant être dessiné de votre projet et modifiez les états d’image "activé" et "désactivé" en images personnalisées.

Ensuite, votre XML n'aura besoin que de android:button="@drawable/btn_check"

 <CheckBox
    android:button="@drawable/btn_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true" />
 

Si vous souhaitez utiliser différentes icônes Android par défaut, vous pouvez utiliser android:button="@android:drawable/..."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X