1

Раньше я использовал следующий стиль для установки preferenceCategory.
Но, как он выглядит, цвет фона не применяется при работе на Lollipop.Стиль «предпочтения категории» не работает в Lollipop

<style name="Theme.Preference.Category" parent="@android:attr/listSeparatorTextViewStyle"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">@color/primary_light</item> 
    <item name="android:background">@color/primary_dark</item> 
    <item name="android:paddingTop">4dp</item> 
    <item name="android:paddingBottom">4dp</item> 
    <item name="android:paddingLeft">4dp</item> 
</style> 

И я установил его: <item name="android:listSeparatorTextViewStyle">@style/Theme.Preference.Category</item> в моей теме.

- это атрибут фона, измененный в Lollipop?

+0

Почему вы используете 'listSeparatorTextViewStyle' вместо' preferenceCategoryStyle' установить стиль категории предпочтения? – alanv

+0

Я предполагаю, что я выполнил один из ответов здесь, в stackOverflow, но даже если бы я установил стиль для переопределения 'android: preferferenceCategoryStyle', он не исправлен (он даже выглядит так, как все остальные атрибуты также игнорируются) – SagiLow

ответ

3

Из-за того, что метод Preference структурирован, вам необходимо создать макет с этими свойствами и установить атрибут android:layout в стиле, на который ссылаются ваши темы android:preferenceCategoryStyle.

Приведенный ниже код подходит для Материала. Вам нужно будет найти подходящие заменители, если вы нацеливаете Holo или AppCompat.

Рез/значения/themes.xml:

<style name="MyAppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar"> 
    ... 
    <item name="android:preferenceCategoryStyle">@style/MyCategoryPreferenceStyle</item> 
</style> 

Рез/значения/styles.xml

<style name="MyCategoryPreferenceStyle" parent="@android:style/Preference.Material.Category"> 
    ... 
    <item name="android:layout">@layout/my_category_preference</item> 
</style> 

вы будете применять любые атрибуты вам нужно в следующем макете. Вы также можете продолжить использовать стиль и указать атрибут style в элементе TextView, но просто убедитесь, что используете действующий родительский стиль.

Рез/макет/my_category_preference.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/title" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="16dip" 
    android:textAppearance="@android:style/TextAppearance.Material.Body2" 
    android:textColor="?android:attr/colorAccent" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:paddingTop="16dip" /> 
+0

выглядит отлично, спасибо – SagiLow

+0

Я использую библиотеку AppCompat, этот ответ отлично работает с одним исключением, мне пришлось удалить следующий атрибут из стиля: 'parent =" @ style/Preference.Material.Category "и другой связанный стиль, поскольку он генерирует ошибку. – Aryo

+0

Как уже упоминалось в ответе, вам нужно найти подходящие заменители, если вы нацеливаете Holo или AppCompat. Например, '@ style/Theme.AppCompat.Light.DarkActionBar'. – alanv

Смежные вопросы