Как применить пользовательский образ к флажку в android

Я пытаюсь применить пользовательский образ к флажку в android, для этого я создаю файл check_custom.xml, в котором я определяю пользовательский образ для разных состояний флажка, например:

<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 --> 

Три разных изображения в трех состояниях на проверенных, на фокусе и на непроверенных, и затем я назначаю этот xml файл атрибуту фона флажками, но я не получаю требуемый результат, этот метод применяет нестандартное изображение, а также изображение по умолчанию.

Ответ 2

Мне не понравился внешний вид флажка по умолчанию, когда макет фона был темным, поэтому я изменил его с помощью селектора xml, чтобы иметь белый фон в кнопке.

Селектор необходим в android: button = "@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"
                            >

И вот содержание "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>

И это результат:

enter image description here

Ответ 3

Скопируйте файл btn_check.xml с сайта android-sdk/platform/android - #/data/res/drawable в вашу проектную папку и измените состояния изображения 'on' и 'off' на свои пользовательские изображения.

Тогда вашему xml просто понадобится android:button="@drawable/btn_check"

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

Если вы хотите использовать разные значки по умолчанию android, вы можете использовать android:button="@android:drawable/..."

Ответ 4

<item android:drawable="@drawable/ON" android:state_checked="false"/>
<item android:drawable="@drawable/OFF" android:state_checked="true"/>
<item android:drawable="@drawable/ON"/>