2011-03-03 49 views
46

Estoy tratando de aplicar una imagen personalizada para casilla de verificación de androide, para este se crea un archivo en el que check_custom.xml imagen personalizada defino para diferentes estados de la casilla de verificación como:Cómo aplicar a la imagen personalizada casilla de verificación androide

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

Tres imágenes diferentes en tres estados en marcado, en foco y sin marcar, y luego asigno este archivo xml al atributo de fondo de las casillas de verificación, pero no obtengo el resultado requerido, esta técnica aplica la imagen personalizada también como imagen por defecto ambos.

+0

posible duplicado de [casilla de verificación personalizado imagen androide] (http://stackoverflow.com/questions/3965484/custom-checkbox-image-android) –

Respuesta

90

Salman, juego android:button en lugar de android:background. Consulte también Custom checkbox image android

+0

Gran! gracias DJC por su respuesta rápida y muy positiva :) –

+2

bienvenida. Si esto funcionara agradecería un clic en la casilla de verificación a la izquierda, lo que ayuda al representante de un respondedor :) – DJC

+2

Es genial y simple, amigo, no lo marques como respuesta. estoy +1 en este –

5

Copie el btn_check.xml de android-sdk/platforms/android - #/data/res/drawable en la carpeta dibujable de su proyecto y cambie los estados de imagen "on" y "off" a sus imágenes personalizadas.

A continuación, el código XML sólo tendrá 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 desea utilizar diferentes predeterminados androide iconos, puede utilizar android:button="@android:drawable/..."

14

no me gustó el aspecto de la imagen de la casilla de verificación predeterminado cuando el diseño del fondo era oscuro, lo cambié usando un selector xml para tener un fondo blanco en el botón.

El selector es necesario en Android: tecla = "@ estirable/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" 
          > 

Y el siguiente es el contenido de "estirable/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> 

Y esto es el resultado:

enter image description here

3

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

Cuestiones relacionadas