CheckBoxPreference con diseño propio

Tengo PreferenceScreen con algunos PreferenceCheckBoxes. Quiero cambiar el textColor y el textSize para el título y el resumen y las imágenes para el checkbox comprobado y uncheckes. Así que estoy usando android:layout para cambiar estos atributos.

Mi ChceckBoxPreference:

 <CheckBoxPreference android:layout="@layout/preference_checkbox" android:key="temp" android:title="@string/title" android:summary="@string/summary" android:defaultValue="true" /> 

Cuando uso android:widgetLayout parece extraño. Y este es mi preferencia_checkbox.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" > <TextView android:id="@+android:id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/gray" android:textSize="20sp" /> <TextView android:id="@+android:id/summary" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/gray" android:textSize="14sp" /> </LinearLayout> <CheckBox android:id="@+android:id/checkbox" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:layout_marginRight="10dp" /> </RelativeLayout> 

Título con id @+android:id/title y resumen con @+android:id/summary están mostrando valores correctos. Sin embargo, la casilla de verificación a pesar del valor predeterminado e id @+android:id/checkbox no está funcionando correctamente. No muestra el valor correcto y no puedo cambiar el valor guardado en las preferencias. Sin usar ninguna disposición, puedo cambiar el valor de la casilla de verificación por el tacto en el CheckBoxPreference entero. Pero ahora (con mi diseño) puedo cambiar el valor de la casilla de verificación sólo por toque en esta casilla de verificación. ¿Cómo puedo hacer el diseño de CheckBoxPreference de manera adecuada con todas las funcionalidades?

Pruebe esto como preference_checkbox.xml

 <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2006 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Layout for a Preference in a PreferenceActivity. The Preference is able to place a specific widget for its particular type in the "widget_frame" layout. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical" android:paddingRight="?android:attr/scrollbarSize"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="15dip" android:layout_marginRight="6dip" android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:layout_weight="1"> <TextView android:id="@+android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" android:ellipsize="marquee" android:fadingEdge="horizontal" android:textColor="#FF0000" /> <TextView android:id="@+android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@android:id/title" android:layout_alignLeft="@android:id/title" android:textAppearance="?android:attr/textAppearanceSmall" android:maxLines="4" /> </RelativeLayout> <!-- Preference should place its actual preference widget here. --> <LinearLayout android:id="@+android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="vertical" /> </LinearLayout> 
  • Las preferencias compartidas no persisten después de reiniciar la aplicación
  • Obtener SharedPreferences de un servicio
  • Android registerOnSharedPreferenceChangeListener () causa bloqueo en una vista personalizada
  • PreferenceScreen personalizado con botones pulsables
  • Usar TimePicker o DatePicker en la pantalla Preferencias en Android
  • Actualizar actividad si se cambia la preferencia
  • Plugin ADT para Android no aparece en Eclipse
  • ¿Cómo regresar de la pantalla de preferencias a la actividad principal?
  • Mostrar el botón de arriba en la barra de acción en las preferencias de la pantalla principal
  • Método RingtonePreference getEntry
  • ¿Cómo obtengo las preferencias para trabajar en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.