根据SDK API级别使用不同的资源文件(使用Eclipse)?

时间:2012-10-26 17:43:20

标签: android eclipse

我正在编写一个Android应用,目标是API级别8到14.我想使用适用于API级别11及更高级别的Theme.Holo.Light主题,以及适用于较低API级别的Theme.Light主题。

res / values / style.xml的内容是:

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

,res / values-v11 / style.xml的内容为:

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

这适用于API级别14,但是当我将目标API级别设置为8时,它会出现以下错误:“检索项目的父项时出错:找不到与给定名称匹配的资源'android:Theme。 Holo'“在 res / values-v11 / style.xml 中,以及” Android AAPT问题“。

如果我删除文件 res / values-v11 / style.xml ,该应用程序会正确编译API级别8目标。

现在,我的理解是,在编译API级别8时,构建系统应该忽略名称以“-v11”结尾的资源文件夹中的任何内容。

我做错了什么?

1 个答案:

答案 0 :(得分:5)

这是因为API 8不知道Theme.Holo.Light是什么,因为它在API11中引入。您必须针对使用。

元素的最高 API版本进行编译

您理解资源选择器错误。它不用于有条件地构建应用程序。它用于在运行时选择正确的资源

请参阅this article