'preferenceCategory'样式背景在Lollipop中不起作用

时间:2014-11-24 22:25:21

标签: android android-preferences android-styles android-5.0-lollipop

我曾经使用以下样式来设置我的preferenceCategory 但是看起来,在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

中更改的背景属性

1 个答案:

答案 0 :(得分:4)

由于Preference的结构方式,您需要创建包含这些属性的布局,并在主题android:layout引用的样式中设置android:preferenceCategoryStyle属性。

以下示例代码适用于Material。如果您要定位Holo或AppCompat,则需要找到合适的替代品。

RES /值/的themes.xml:

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

RES /值/ styles.xml

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

您将在以下布局中应用所需的任何属性。您还可以继续使用样式并在style元素上指定TextView属性,但只需确保您使用有效的父样式。

RES /布局/ 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" />