Переопределение макета, используемого для предпочтения в preferenceActivity / preferenceScreen с использованием темы - PullRequest
4 голосов
/ 28 февраля 2011

У меня есть 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 ]

4 голосов
/ 29 июля 2011

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

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

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

Удачи!

0 голосов
/ 28 февраля 2011

Это ошибка. См. этот выпуск .

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

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

Удачи
Том

...