我目前正在开发我的应用程序,以将其设计基于 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-v14
thenvalues-v11
和 finallyvalues
。 - 如果设备在 11 和 13 之间的 API 上运行,系统将加载
values-v11
,然后values
. - 如果设备在 API 版本 < 11 上运行,系统将仅加载
values
.
如果确实如此,那么在父文件夹中设置最大样式values
并仅在 v11 或 v14 中添加特定样式是否有意义?
抱歉,问题很长,我希望很清楚,这个主题/样式系统仅在 Android 指南中进行了简要描述,很难找到有关它如何工作的信息......
谢谢你的帮助!