Подтвердить что ты не робот

Изменить тему в соответствии с версией Android

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

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

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

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

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

4b9b3361

Ответ 1

EDIT: Обновлено для выпущенной версии 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 или тому подобное. Это полностью зависит от вас.