Переопределение макета, используемого для предпочтения в preferenceActivity/preferenceScreen с использованием тем

У меня есть предпочтение в моем приложении, и я попытался установить стиль предпочтений, используя следующую тему:

<?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) не применяется ни к одному из параметров внутри моего предпочтенияActivity.

Это правильный способ добиться тематики предпочтений? или я что-то пропустил? Заранее спасибо :)


person stealthcopter    schedule 27.02.2011    source источник


Ответы (2)


Я обнаружил, что лучше не использовать parent="android:style/Preference", так как он, похоже, не применяет стиль, который я пытаюсь переопределить. Настройте свой макет, который вы используете (@layout/preference), и отбросьте наследование от android:style/Preference. Это сработало для меня, когда мне пришлось сделать то же самое.

так и должно быть:

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

Удачи!

person Paul    schedule 29.07.2011

Это ошибка. См. эту проблему.

Вы можете «исправить» это, назначив идентификатор для каждого PreferenceScreen. Затем вы делаете это для каждого:

((PreferenceScreen) preferenceScreen).getDialog().getWindow().setBackgroundDrawable(drawable);

Удачи
Том

person TomTasche    schedule 28.02.2011
comment
Боюсь, вы неправильно поняли вопрос. Я уже знаю об этой ошибке, я уже задавал вопрос об этом раньше: stackoverflow.e com/questions/2755005 /nested-preference-screens-lose-theming, но это связано с переопределением макета для каждого предпочтения (заголовок, сводка и виджет) - person stealthcopter; 28.02.2011