Android set divider padding para la pantalla de preferencias

Tengo PreferenceScreen contienen muchos CheckBox, lo personalizo por referirlo a la disposición de encargo como bramido:

<?xml version="1.0" encoding="utf-8" ?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:summary="checkbox one" android:key="key_one" android:layout="@layout/mylayout" /> <CheckBoxPreference android:summary="checkbox two" android:key="key_two" android:layout="@layout/mylayout" /> </PreferenceScreen> 

Mylayout.xml:

 <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"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:minWidth="@dimen/preference_icon_minWidth" android:orientation="horizontal"> <ImageView android:id="@+android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dip" android:layout_marginRight="8dip" 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:textAppearance="?android:attr/textAppearanceMedium" android:fadingEdge="horizontal" /> <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:textColor="?android:attr/textColorSecondary" android:maxLines="4" /> </RelativeLayout> <LinearLayout android:id="@+android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="match_parent" android:minWidth="@dimen/preference_widget_width" android:gravity="center" android:orientation="vertical" /> </LinearLayout> 

Todo funciona bien también i personalizar divisor entre la casilla de verificación en la actividad prefs como:

  ListView list = (ListView) findViewById(android.R.id.list); list.setDivider(new ColorDrawable(Color.RED)); // or some other color int list.setDividerHeight((5)); list.setVerticalScrollBarEnabled(false); 

Cuando quiero fijar el relleno al divisor solamente como:

  list.setPadding(0, 0, 0, 0); 

Fijó el relleno a toda la visión,

CÓMO puedo fijar el relleno al divisor solamente sin afectar el relleno de toda la visión.

Cualquier ayuda será apreciada, gracias

Para permitir el relleno de divisor de preferencia

Primero : agregue esta línea a su actividad de preferencia que conduzca a la transparencia de android default divider

 list.setDivider(new ColorDrawable(0x00000000)); 

Segundo : crear una carpeta llamada drawable en res, y luego crear en ella divider.xml que será como a continuación:

 <?xml version="1.0" encoding="utf-8" ?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#B22222" /> </shape> 

Tercero :

Agregue la vista a su mylayout.xml así que será como abajo:

 <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"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:minWidth="@dimen/preference_icon_minWidth" android:orientation="horizontal"> <ImageView android:id="@+android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dip" android:layout_marginRight="8dip" 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:textAppearance="?android:attr/textAppearanceMedium" android:fadingEdge="horizontal" /> <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:textColor="?android:attr/textColorSecondary" android:maxLines="4" /> <View android:id="@+id/divider" android:background="@drawable/divider" android:layout_width="match_parent" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_height="5dp" android:layout_below="@+android:id/summary"/> </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:minWidth="@dimen/preference_widget_width" android:gravity="center" android:orientation="vertical" /> 

El punto aquí usted agrega Vea debajo de sus textos y refiera esa visión para dividir la forma en res resuelve así que finalmente usted conseguirá un divisor de encargo que puede ser modificado para requisitos particulares como usted necesita.

Espero que te ayude.

La salida será como abajo:

Introduzca aquí la descripción de la imagen

Tienes que crear tu forma personalizada

Custom_divider.xml

 <shape android:shape="rectangle"> <solid android:color="@color/grey" /> <corners android:radius="2dp" /> </shape> 

Establezca esto como divisor para su ListView en xml

Activity_list.xml

 <ListView android:dividerHeight="2dp" android:divider="@drawable/custom_divider" ... /> 

Debe crear su propio recurso para divider:

 <?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetTop="5dp"> <shape android:shape="rectangle"> <solid android:color="#FF0000" /> <size android:height="4dp" /> </shape> </inset> 

En este caso la altura de la forma del divisor es 4dp y el relleno superior es 5dp, cuando usted fija la altura del divisor que usted debe suma la altura + la inserción de la forma.

 ListView list = (ListView) findViewById(android.R.id.list); list.setDivider(new ColorDrawable(Color.RED)); // or some other color int list.setDividerHeight((5)); //wrorng code list.setVerticalScrollBarEnabled(false); 

Para establecer la altura del divisor correctamente para todas las pantallas de dencity debe establecerlo en dp pero para el número por defecto "5" interpretado en píxeles (px).

 final float scale = getContext().getResources().getDisplayMetrics().density; int pixels = (int) (dps * scale + 0.5f); 

Para obtener más información acerca de la forma y el uso de recursos de dibujos insertados, consulte la documentación de Android .

Debería tratar de derivar un tema del predeterminado de android, asignándolo a su pantalla de preferencias (aunque dicen que hay un error en las versiones 2.x que le impide hacer eso a menos que se solucione como se describe aquí ) y sobreponiendo la propiedad android:dividerPadding De uno de los estilos.

Realmente no puedo decir con certeza qué estilo sería, tendrás que cavar en él, aquí es styles.xml de android para referencia y aquí hay un ejemplo de cómo reemplazar la aparición de ListView en un tema

  • NullPointerException al llamar a RingTonePreference en Samsung Galaxy S
  • ¿Hay una manera de agregar un buscador a mi pantalla de preferencia real?
  • Android: SharedPreference: Los valores predeterminados no se establecen en el inicio
  • ¿Cómo regresar de la pantalla de preferencias a la actividad principal?
  • ¿Cómo puedo agregar los tonos de llamada personalizados de mi aplicación en la carpeta res / raw a un ringtonepreference
  • ¿Cómo obtener preferencias de tono en tiempo de ejecución?
  • Preferencia y comprobación de la casilla de verificación si está activada o desactivada
  • Inicie Actividad desde preferences.xml y obtenga el resultado en onActivityResult
  • Advertencia de método obsoleto de Android con respecto a PreferenceActivity
  • ¿Cómo abrir o simular un clic en una preferencia de Android, creado con XML, mediante programación?
  • Inicio de Configuración Actividad de Preferencias XML funciona en 2.x pero no en 4.x
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.