Para mí, el diseño publicado por praneetloke hizo desaparecer el widget de las preferencias que tienen un widget de asociado, por ejemplo, una casilla de verificación. Hay un LinearLayout con id/widget_frame que se necesita para el widget. Lo siguiente funcionó para mí, en Android 2.3 a 4.2.2. El único cambio que tuve que hacer fue establecer android: visibility = "gone" en el diseño que contiene el icono de preferencia, que no estaba disponible en Gingerbread.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="8dip"
android:paddingRight="?android:attr/scrollbarSize" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:minWidth="0dp"
android:orientation="horizontal"
android:visibility="gone" >
<ImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:minWidth="48dp"
android:paddingRight="8dip" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingBottom="6dip"
android:paddingRight="8dip"
android:paddingTop="6dip" >
<TextView
android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@android:id/title"
android:layout_below="@android:id/title"
android:maxLines="4"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary" />
</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"
android:minWidth="48dp"
android:orientation="vertical" />
</LinearLayout>
Referencias: Las dimensiones predeterminadas utilizadas en el diseño están aquí GrepCode /res/values/dimens.xml. El diseño del elemento de preferencia real está aquí GrepCode /res/layout/preference_holo.xml. Tenga en cuenta que también hay una versión no holo llamada preference.xml.
Me fue útil. Pero, ¿cómo puedo obtener las fuentes del sistema, los márgenes y los colores para los elementos de la lista de preferencias y agregarlos a mylayout.xml? – degratnik
Muchas gracias por los consejos. Tengo un comentario para mejorar tu respuesta anterior. Debe especificar textSizes como "sp", o "dp", definitivamente no como "px". El uso de "dp" hará que la fuente tenga el mismo tamaño físico en todos los dispositivos, "sp" es más o menos como "dp", pero el tamaño seguirá la configuración del dispositivo para tamaños de fuente globales (p.tamaño grande/mediano/pequeño en Configuración-Pantalla en Android 4). Mi opinión es que "sp" es el más apropiado aquí. –
¿Cómo puedo cambiar los blue drawable predeterminados para la preferencia de casilla de verificación. – Dory