Разная тема для разных версий Android SDK - PullRequest
27 голосов
/ 04 февраля 2012

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

Причина, по которой я спрашиваю, заключается в том, что я хочу поддерживать вплоть до версии 8 SDK, но для тех пользователей, у которых есть ICS, я хочу иметь возможность следовать стандартам разработки для ICS и использовать тему Holo.

Я могу видеть из Запрограммировать различные макеты для разных версий в Android , что у меня может быть папка values-v14, в которой будет файл theme.xml для переопределения объявления темы. Тем не менее, он не скомпилируется, если я ссылаюсь на Theme.Holo. Я считаю, что это потому, что у меня есть следующее в моем AndroidManifest.xml

<uses-sdk android:minSdkVersion="8" />
<uses-sdk android:targetSdkVersion="11"/>

Любые указатели приветствуются.

UPDATE: - ОК, так вот мои файлы: - AndroidManifest.xml:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:name=".Refunder"
    android:theme="@style/MainTheme"
    >

разреш / значения / themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <item name="android:typeface">normal</item>
        <item name="android:textSize">15sp</item>
    </style>
</resources>

Рез / значения-v11 / themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@android:style/Theme.Holo">
        <item name="android:typeface">normal</item>
        <item name="android:textSize">15sp</item>
    </style>
</resources>

Это соответствует статье, которую я прочитал здесь: - http://android -developers.blogspot.com / 2012/01 / holo -where.html

Когда я делаю это, я получаю сообщение об ошибке компиляции в Eclipse, в котором говорится: -

error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Holo'

1 Ответ

15 голосов
/ 07 февраля 2012

То, что вы делаете (с вашей папкой values-v14), правильно.Вам просто нужно изменить цель сборки, чтобы она могла скомпилироваться.(щелкните правой кнопкой мыши свой проект, выберите свойства, выберите Android, выберите Android 14 или выше)

Убедитесь, что вы не используете какие-либо функции, превосходящие ваш Android: minSdkVersion, поскольку это вызовет принудительное закрытие, если оно использовалось ранееверсия Android.

...