3

我正在编写一个针对 API 级别 8 到 14 的 Android 应用程序。我想将 Theme.Holo.Light 主题用于 API 级别 11 及更高级别,并将 Theme.Light 主题用于较低 API 级别。

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”结尾的任何内容。

我究竟做错了什么?

4

1 回答 1

5

这是因为 API 8 不知道 Theme.Holo.Light 是什么,因为它是在 API11 中引入的。您必须针对您使用的元素的最高API 版本进行编译。

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

这篇文章

于 2012-10-26T17:44:54.107 回答