目前我正在开发我的应用程序,基于Holo主题进行设计。总体上我想做的事情是可以实现的,但是我对values
、values-v11
和values-v14
这些文件夹的工作方式有些困惑。
所以我知道:
values
目标API小于11values-v11
目标API在11到13之间values-v14
目标API大于13
起初,我认为我必须为每个文件夹指定应用程序所需的所有样式,但后来我意识到一种继承系统已经存在。
我的问题是,我真的很困惑,不太清楚这三个文件夹之间的继承关系是如何工作的。
我进行了以下测试,以便查看我的手机上的行为(运行在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-v14
文件夹,系统也会采用values-v11
文件夹中的样式? 我以为它可能会默认使用values
文件夹,但不是values-v11
。更普遍地说,我的问题是,这三个文件夹是父子关系吗? 意思是:
- 如果设备正在运行API版本> 13,则系统将加载
values-v14
,然后是values-v11
,最后是values
。 - 如果设备在11到13之间运行API,则系统将加载
values-v11
,然后是values
。 - 如果设备运行的API版本<11,则系统仅会加载
values
。
values
中设置最大数量的样式并仅添加特定的样式到v11或v14是否有意义呢?对不起,问题很长,希望清楚,Android指南中只简要描述了这个主题/样式系统,很难找到有关其工作方式的信息...
谢谢你的帮助!
values-v14
目标 API >= 14,values-v11
目标 API 在 11 至 13(包括 11 和 13)之间 如果values-v14
存在,否则 它将匹配从 11 开始的所有版本及以上。values
是默认文件夹,它将作为最后一个被匹配,覆盖其他没有被其他values-xx
文件夹覆盖的 API 级别。 - uservalues
中发布的简单样式?) - Yoann HercouetListView
引入了activatedBackgroundIndicator
属性。由于此属性在11
以下不存在,因此values
文件夹将不使用此属性,但您可以包含一个values-v11
文件夹,以利用具有该属性的版本中的应用程序。但是,如果您有不同的文件夹,则需要同时拥有其他样式。 - user