2010-08-25 30 views
14

No puedo personalizar mi casilla de verificación, aunque he definido el fondo en el archivo de preferencia xml, no extrae el archivo. 1. Estoy tratando de mostrar imágenes personalizadas para casilla de verificación y he definido el xml de selección como "android_button.xml" que se parece a:personalizar la casilla de verificación preferencia

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checkable="true" 
     android:drawable="@drawable/state_normal" /> <!-- pressed --> 
<item android:state_checked="true" 
     android:drawable="@drawable/android_pressed" /> <!-- focused --> 
<item android:drawable="@drawable/state_normal" /> <!-- default --> 
</selector> 

STATE_NORMAL y android_pressed son dos imágenes .png en res> carpeta estirable.

2.my archivo de casilla de verificación preference.xml es:

  <CheckBoxPreference android:key="@string/Drop_Option" 
      android:title="Close after call drop" 
      android:defaultValue="true" 
      android:background="@drawable/android_button" 
      /> 

¿Hay algún error en la definición, el único cambio que se muestra en pantalla es el androide: texto del título, si cambio el texto, cambia el texto. Nada más cambia Cómo puedo solucionar esto. Gracias por su sugerencia.

Respuesta

42

Hay dos maneras de lograr lo que necesita, primero es definir la costumbre casilla custom_chexbox.xml diseño en res/layout:

<?xml version="1.0" encoding="UTF-8"?> 
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+android:id/checkbox" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:focusable="false" 
android:clickable="false" android:button="@drawable/android_button"/> 

Luego hay que especificar este diseño para la preferencia:

<CheckBoxPreference android:key="@string/Drop_Option" 
android:title="Close after call drop" android:defaultValue="true" 
android:widgetLayout="@layout/custom_checkbox"/> 

La segunda manera es crear un tema personalizado, redefinir el estilo para las vistas de casillas de verificación y aplicar el tema a la actividad de preferencias, consulte How to customize the color of the CheckMark color in android in a dialog. : android para obtener más información.

+1

nivel enfermo, no tenía ni idea sobre android: widgetLayout, desearía que cada otro componente tuviera eso. – Gubatron

+0

amigo, esto es perfecto. – zenperttu

+0

Esto funciona perfectamente hombre. Eres un salvavidas. Nunca supe que podemos usar diseño personalizado para widgets también. Muchas gracias. –

0

Haga un archivo XML drwable:

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

    <item android:drawable="@drawable/checkbox_active_btn" android:state_checked="true"></item> 
    <item android:drawable="@drawable/checkbox_active_btn" android:state_checked="true" android:state_enabled="false" android:state_focused="true"></item> 
    <item android:drawable="@drawable/checkbox_active_btn" android:state_checked="true" android:state_enabled="false"></item> 
    <item android:drawable="@drawable/checkbox_active_btn" android:state_checked="true" android:state_focused="true"></item> 
    <item android:drawable="@drawable/checkbox_active_btn" android:state_checked="true" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/checkbox_inactive_btn" android:state_checked="false"></item> 
    <item android:drawable="@drawable/checkbox_inactive_btn" android:state_checked="false" android:state_enabled="false" android:state_focused="true"></item> 
    <item android:drawable="@drawable/checkbox_inactive_btn" android:state_checked="false" android:state_enabled="false"></item> 
    <item android:drawable="@drawable/checkbox_inactive_btn" android:state_checked="false" android:state_focused="true"></item> 
    <item android:drawable="@drawable/checkbox_inactive_btn" android:state_checked="false" android:state_pressed="true"></item> 

</selector> 

Conjunto mediante programación por cb.setButtonDrawable (R.drawable.checkboxcustom);

Cuestiones relacionadas