使用主题覆盖preferenceActivity / preferenceScreen中用于首选项的布局

时间:2011-02-27 22:58:23

标签: android android-layout sharedpreferences preferenceactivity preferencescreen

我的应用程序中有一个preferenceActivity,我尝试使用以下主题设置首选项样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="MyPreferenceTheme" parent="android:Theme.Translucent">
    <item name="android:preferenceStyle">@style/MyPreference</item>
    <item name="android:windowBackground">@color/transparent_black</item>
</style>

<style name="MyPreference" parent="@android:style/Preference">
    <item name="android:layout">@layout/preference</item>
</style>

<color name="transparent_black">#BB000000</color>

所以我知道主题正在加载,因为背景颜色正确。但是我的自定义preferenceLayout(res / layout / preference.xml)没有应用于我的preferenceActivity中的任何首选项。

这是实现主流偏好的正确方法吗?还是我错过了什么? 在此先感谢:)

2 个答案:

答案 0 :(得分:4)

我发现最好不要使用parent =“android:style / Preference”,因为它似乎不适用我试图用它覆盖它的样式。设置您正在使用的布局样式(@ layout / preference)并删除android:style / Preference的继承。当我必须做同样的事情时,它对我有用。

所以它应该是:

<style name="MyPreference">
    <item name="android:layout">@layout/preference</item>
</style>
祝你好运!

答案 1 :(得分:0)

这是一个错误。请参阅this issue

您可以通过为每个PreferenceScreen分配ID来“修复”它。然后,你为每一个做到这一点:

((PreferenceScreen) preferenceScreen).getDialog().getWindow().setBackgroundDrawable(drawable);
祝你好运 汤姆