Как я могу сделать изменения стиля в настройках, видимых в моей деятельности - PullRequest
1 голос
/ 05 апреля 2011

Я хочу, чтобы пользователь моего приложения мог изменить стиль моего приложения.Таким образом, он должен иметь возможность решить, отображается ли фоновое изображение, textSize / textColor различных textView, цвет фона деятельности.

Как это возможно ?!Я знаю, как настроить стиль или тему, но я не знаю, как изменить ее по решению пользователей ..

Можете ли вы помочь мне, пожалуйста?!

Спасиболот:)

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Что вам нужно в ваших предпочтениях, это ListPreference, как:

<ListPreference android:key="theme" android:title="@string/theme"
    android:entries="@array/theme_names" android:entryValues="@array/themes" />

Затем в arrays.xml добавьте что-то вроде:

<array name="themes">
    <item>dark</item>
    <item>light</item>
    <item>purple</item>
</array>
<array name="theme_names">
    <item>@string/dark</item>
    <item>@string/light</item>
    <item>@string/purple</item>
</array>

А затем используйте setTheme () in onCreate():

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String userTheme = prefs.getString("theme", "dark");

if (userTheme.equals("dark"))
    setTheme(R.style.Theme_Dark);
else if (userTheme.equals("light"))
    setTheme(R.style.Theme_Light);
// etc...

setContentView(R.layout.main);

Это означает, что вам может понадобиться перезапустить действие, чтобы onCreate() снова вызывался. Но, в качестве альтернативы, вы можете вызвать setTheme() в onResume() и заново раздувать иерархию представления, чтобы тема работала при возврате из предпочтений, не требуя перезапуска действия.

0 голосов
/ 05 апреля 2011

Вы можете изменить стиль действия во время выполнения, но только на существующие стили. Таким образом, вы можете, скажем, определить 3 стиля в разных XML-файлах, перечислить эти 3 для вашего пользователя, попросить их выбрать один и установить стиль, используя Activity.setTheme(). Затем вам придется уничтожить вид и воссоздать его. В настоящее время Android не поддерживает другие способы изменения стиля во время выполнения.

...