Cómo cambiar el color del divisor PreferenceCategory en PreferenceScreen

Tengo un android.support.v4.preference.PreferenceFragment que utiliza el siguiente PreferenceScreen:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Cat1" android:key="pref_cat1"> <ListPreference android:key="pref_list1" android:title="@string/pref_list1" android:dialogTitle="@string/pref_list1" android:entries="@array/pref_list1_entries" android:entryValues="@array/pref_list1_entries" android:defaultValue="@string/pref_list1_default"/> <EditTextPreference android:key="pref_text2" android:title="@string/pref_text2" /> </PreferenceCategory> <PreferenceCategory android:title="Cat2" android:key="pref_cat2"> <EditTextPreference android:key="pref_text3" android:title="@string/pref_text3" /> </PreferenceCategory> 

Al mostrar el fragmento de preferencia, se muestran algunos divisores entre las preferencias, pero también bajo el nombre de cada categoría de preferencias. Aunque puedo modificar fácilmente el color de los divisores entre las preferencias accediendo al ListView de PreferenceFragment, esto no tiene ningún efecto en los divisores de PreferenciaCategoría.

¿Cómo cambiar también el color de estos divisores?

    2 Solutions collect form web for “Cómo cambiar el color del divisor PreferenceCategory en PreferenceScreen”

    Tiene dos opciones:

    1. Defina la listSeparatorTextViewStyle en el tema de la aplicación

    Tenga en cuenta que cualquier otra cosa que dependa de este atributo del tema también cambiará para utilizar el estilo que defina. Si eso está bien con usted, se verá algo como esto:

     <style name="AppTheme" parent="android:..."> ... <item name="android:listSeparatorTextViewStyle">@style/ListSeparatorText</item> </style> <style name="ListSeparatorText" parent="android:Widget.TextView"><!--parent is optional --> <item name="android:background">...</item> ... </style> 
    1. Definir un diseño personalizado para sus categorías de preferencias

    El diseño predeterminado para una categoría de PreferenceCategory es sólo un TextView. Puedes hacer tu diseño tan simple o tan complicado como quieras, pero en algún lugar debería ser un TextView con android:id="@android:id/title" para que el título se conecte automáticamente.

    Una vez que tengas un layout, usa el atributo android:layout en tu preferencia xml:

     <PreferenceCategory android:title="Cat2" android:key="pref_cat2" android:layout="@layout/my_pref_category"> ... </PreferenceCategory> 

    Alternativamente, puedes definir la preferenceCategoryStyle en el tema de tu aplicación, en cuyo caso no es necesario usar android:layout en absoluto en tu preferencia xml.

     <style name="AppTheme" parent="android:..."> ... <item name="android:preferenceCategoryStyle">@style/PreferenceCategoryStyle</item> </style> <style name="PreferenceCategoryStyle" parent="android:Preference.Category"> <item name="android:layout">@layout/my_pref_category</item> ... </style> 

    Tuve el mismo problema en mi archivo Prefernces . Lo resolví por los siguientes pasos:

    1: Defina el nombre de archivo preferences_category.xml :

     <?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:orientation="vertical"> <TextView android:id="@+android:id/title" style="?android:attr/listSeparatorTextViewStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" /> <View style="@style/Divider" /> </LinearLayout> 

    2: Definir style en el archivo xml de estilo:

     <style name="Divider"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> <item name="android:background">@android:color/white</item> </style> 

    3: agregue el archivo preferences_category.xml como android:layout atributo de android:layout en el archivo xml de preferences ::

      <PreferenceCategory android:title="My title" android:layout="@layout/preferences_category"> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.