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:
- Cómo cambiar el estilo de texto en el fragmento de preferencia
- Android - PreferenceActivity - Cambiar el color del texto de resumen de CheckBoxPreference
- Single page PreferenceActivity w / sin encabezados / fragmentos?
- ¿Cómo acceder a widgets en una DialogPreference personalizada con un diseño inflado?
- NullPointerException al llamar a RingTonePreference en Samsung Galaxy S
<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
- Cómo administrar divisores en un PreferenceFragment?
- Actualizar android PreferenceFragment
- Iniciar ubicación Configuración intento de preferencias Archivo XML
- Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
- ¿Dónde almacenar las claves de preferencias de Android?
- Obtener posición del artículo desde el adaptador personalizado
- SharedPreferences reset: El tamaño del mapa no es 0 después de restablecer
- PreferenceFragment.findPreference devuelve siempre NULL
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:
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
- ¿Cómo puede compilar el proyecto de Android cuando falta la clase importada en SDK?
- VerrifyError con Guice en el proyecto de Android maven