Программно?
Я пытаюсь получить выбранную пользователем тему и чувствую, что я расстроен. Определение темы в AndroidManifest.xml
работает так, как должно, но (насколько я могу судить) не может измениться в зависимости от настроек приложения:
<application
android:theme="@style/theme_sunshine"
android:icon="@drawable/icon"
android:label="@string/app_name">
В качестве альтернативы, установка динамически в каждом действии также работает:
someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);
Но это кажется беспорядочным, и я предпочел бы установить тему для всего приложения в одном месте. Моя первая мысль заключалась в том, чтобы захватить контекст приложения, как только начнется моя основная деятельность и сделайте это:
getApplicationContext().setTheme(R.style.theme_dummy);
Насколько я могу судить, этот должен делать трюк, но на самом деле он ничего не делает - у всего приложения есть значение по умолчанию Стиль Android. Является ли это выше, и если да, могу ли я сделать что-то еще немое?
Я работаю на уровне API 3, если это имеет значение. Добродетели в правильном направлении высоко оценили!
Связанный вопрос.
Ответы
Ответ 1
Создайте базовую активность для своего приложения и переопределите onCreate, чтобы установить тему. Выведите все ваши другие действия из этой базы.
Также проверьте этот учебник:
http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html
Ответ 2
Возможно, это может быть хорошим решением, но я не смог найти его, поэтому я создал небольшой статический вспомогательный метод в вспомогательном классе, который выполняет Activity и в основном выполняет те две строки, которые вы написали. Конечно, это не идеально, но просто добавление одной короткой строки кода для каждого метода onCreate()
в моем приложении было приемлемым.