Как я могу сделать изменения стиля в настройках, видимых в моей деятельности

1

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

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

Можете ли вы мне помочь?!

Большое спасибо:)

Теги:
textview
background-color
preferences

2 ответа

0
Лучший ответ

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

4

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

<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() в 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
    Большое спасибо! Я попробую это в ближайшие часы;)
  • 0
    Можете ли вы сказать мне, как я могу дать пользователю возможность выбрать его индивидуальный размер текста?
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню