我目前正在开发我的应用程序,以将其设计基于 Holo 主题。在全球范围内我想做的是工作,但我对文件夹的工作方式有点困惑values,values-v11并且values-v14.
所以我知道:
values针对低于 11 的 APIvalues-v11目标是 11 到 13 之间的 APIvalues-v14目标是优于 13 的 API
起初我以为我必须为每个文件夹指定应用程序所需的所有样式,但后来我意识到一种继承系统已经到位。
我的问题是我真的很困惑,不清楚这三个文件夹之间的继承是如何工作的。
我进行了以下测试以查看手机上的行为(在 Android 4.0 上运行,因此该文件夹values-v14应该是加载的文件夹):
在values我有一种将文本颜色设置为蓝色的样式:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>
在values-v11我有一种将文本颜色设置为白色的样式:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
在values-v14我有一种将文本颜色设置为红色的样式:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>
对于上面的第一种情况(每个文件夹具有不同的颜色),我的文本上加载的颜色是红色,这意味着values-v14文件夹具有优先权。
然后,如果我从文件夹中注释掉红色样式values-v14,则文本变为白色。这是否意味着values-v11即使设备以文件夹为目标,系统也会采用文件夹中的样式values-v14?我认为它可能会values默认使用该文件夹,但不是values-v11.
更一般地说,我的问题是,这 3 个文件夹是否作为父级和子级工作?意思是:
- 如果设备在 API 版本 > 13 上运行,系统将加载
values-v14thenvalues-v11和 finallyvalues。 - 如果设备在 11 和 13 之间的 API 上运行,系统将加载
values-v11,然后values. - 如果设备在 API 版本 < 11 上运行,系统将仅加载
values.
如果确实如此,那么在父文件夹中设置最大样式values并仅在 v11 或 v14 中添加特定样式是否有意义?
抱歉,问题很长,我希望很清楚,这个主题/样式系统仅在 Android 指南中进行了简要描述,很难找到有关它如何工作的信息......
谢谢你的帮助!