Change icons of checked and unchecked for Checkbox for Android

107,603

Solution 1

Kind of a mix:

Set it in your layout file :-

 <CheckBox android:layout_width="wrap_content"
           android:layout_height="wrap_content" 
           android:text="new checkbox"
           android:background="@drawable/checkbox_background" 
           android:button="@drawable/checkbox" />

where the @drawable/checkbox will look like:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="true" android:state_focused="true"
  android:drawable="@drawable/checkbox_on_background_focus_yellow" />
 <item android:state_checked="false" android:state_focused="true"
  android:drawable="@drawable/checkbox_off_background_focus_yellow" />
 <item android:state_checked="false"
  android:drawable="@drawable/checkbox_off_background" />
 <item android:state_checked="true"
  android:drawable="@drawable/checkbox_on_background" />
</selector>

Solution 2

it's android:button="@drawable/selector_checkbox" to make it work

Solution 3

This may be achieved by using AppCompatCheckBox. You can use app:buttonCompat="@drawable/selector_drawable" to change the selector.

It's working with PNGs, but I didn't find a way for it to work with Vector Drawables.

Solution 4

I realize this is an old question, and the OP is talking about using custom gx that aren't necessary 'checkbox'-looking, but there is a fantastic resource for generating custom colored assets here: http://kobroor.pl/

Just give it the relevant details and it spits out graphics, complete with xml resources, that you can just drop right in.

Solution 5

One alternative would be to use a drawable/textview instead of a checkbox and manipulate it accordingly. I have used this method to have my own checked and unchecked images for a task application.

Share:
107,603
Mohit Deshpande
Author by

Mohit Deshpande

I am a researcher at The Ohio State University in the field of computer vision and machine learning. I have worked as a mobile apps instructor for Zenva and current work as a writer for Zenva in machine learning.

Updated on July 05, 2022

Comments

  • Mohit Deshpande
    Mohit Deshpande almost 2 years

    Instead of having a check mark for the icon, I want a custom star (I have checked and unchecked icons). Can this be done through a property? Or must I declare a custom widget that derives from Checkbox?

  • ggomeze
    ggomeze about 11 years
    Same as with any other checkbox (developer.android.com/reference/android/widget/CheckBox.htm‌​l). You can make use of of this method if manually want to set it to check or unchecked: developer.android.com/reference/android/widget/…
  • Shaishav Jogani
    Shaishav Jogani almost 8 years
    @ggomeze what if we want to change the size of text as well ??
  • ggomeze
    ggomeze almost 8 years
    Have you tried scale within the Checkbox?: android:scaleX="1.5" and android:scaleY="1.5"
  • soshial
    soshial about 7 years
    android:button property doesn't work on pre-Lollipop devices
  • Antek
    Antek almost 7 years
    @soshial what should be the preferred compat method then?
  • Andrain
    Andrain over 2 years
    Thank you so much, I have been struggling for days. Only your solution worked.