Изменить тему в соответствии с версией Android - PullRequest
20 голосов
/ 01 февраля 2011

Я готовлю свое приложение для работы с сотами.У меня есть небольшой вопрос эстетики в связи с темой Android.

Для сот рекомендуется использовать следующую тему.

android:theme="@android:style/Theme.Holo.Light" 

Как заставить мое приложение использовать другую тему, если оно использовалось в предыдущей версии?

Заранее спасибо

1 Ответ

32 голосов
/ 01 февраля 2011

РЕДАКТИРОВАТЬ : Обновлено для выпущенной версии 3.0 SDK.


Один из способов сделать это - установить <uses-sdk android:targetSdkVersion="11">. Вы также должны поместить это выше вашего <application> определения. Это скажет системе использовать голографическую тему, если она доступна, и тему по умолчанию в противном случае.

Другой способ сделать это - определить тему, скажем MyTheme, которая наследуется от другой темы в зависимости от уровня API / версии ОС. Вы можете сделать это, используя квалификатор каталога ресурсов .

Ваша структура каталогов может выглядеть следующим образом:

res/
  values/
    styles.xml
  values-v11/
    styles.xml

Содержимое res/values/styles.xml будет выглядеть примерно так:

<resources>
  <style name="MyTheme" parent="@android:style/Theme.Light">
    ...
  </style>
</resources>

А содержимое res/values-v11/styles.xml будет примерно таким:

<resources>
  <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    ...
  </style>
</resources>

Обратите внимание, что в будущем тема Holo может не всегда иметь смысл в зависимости от уровня API, поэтому вам может потребоваться настроить этот подход позже. Вы также можете использовать другие квалификаторы каталогов, такие как values-large-v11 или т.п. Это полностью зависит от вас.

...