Динамически менять тему деятельности - PullRequest
4 голосов
/ 08 февраля 2011

Мое приложение имеет общий основной вид деятельности. Основная деятельность читает свою конфигурацию из arrays.xml, как следует

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="home_buttons_text">
    <item>@string/Title_1</item>
  </string-array>
  <array name="home_buttons_icon">
    <item>@drawable/google</item>
  </array>
  <string-array name="home_buttons_url">
    <item>http://www.google.com</item>
  </string-array>
  <array name="themes">
    <item>@style/my_theme</item>
  </array>
</resources>

Таким образом, чтобы добавить новую иконку, я просто добавляю новые строки здесь.

Так что в "темах" у меня есть название темы. Как я могу загрузить и применить тему по имени?

Для иконок, которые я использовал

TypedArray mItemsIcons = resources.obtainTypedArray(R.array.home_buttons_icon);
TypedArray mThemes = resources.obtainTypedArray(R.array.themes);
.
.
.
mItemsIcons.getDrawable(position);
.
.
.

Но я понятия не имею, как получить тему. Я проверял

int theme = mThemes.getResourceId(position);
setTheme(theme);

но это не работает.

Проверьте здесь для деталей: http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray

1 Ответ

4 голосов
/ 13 октября 2011

вы можете использовать setTheme(..) перед вызовом setContentView(...) и super.oncreate(), и он должен нормально работать

...