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

  • Botón de encendido / apagado en las preferencias y barra de acción - Ice Cream Sandwich Estilo
  • La sub-pantalla de preferencia no se abre cuando se usa support.v7.preference
  • ¿Cuál es el punto de SharedPreferences.getFloat ()
  • Una manera fácil de hacer la elección múltiple ListPreference en Android?
  • Preferences Support Library - SwitchPreference no funciona
  • Obtener una vista de preferencia con un diseño personalizado
  • ¿Cómo regresar de la pantalla de preferencias a la actividad principal?
  • SwitchPreferences llama varias veces al método onPreferenceChange ()
  • ¿Cómo abrir AlertDialog desde la pantalla de preferencias?
  • ¿Cómo abrir o simular clic en android ListPreference, que es dentro de la categoría de preferencia?
  • Mi var pública es invisible a su primo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.