样式和主题值,值-V11和值-V14文件夹

我目前正在开发我的应用程序,以Holo主题为基础进行devise。 在全球范围内,我想要做的是工作,但我对工作文件夹valuesvalues-v11values-v14 values-v11的方式有点困惑。

所以我知道:

  • values是针对低于11的API
  • values-v11是针对11和13之间的API
  • values-v14的目标是优于13的API

起初我以为我必须为每个文件夹指定应用程序所需的所有样式,但是后来我意识到一种inheritance系统已经到位。

我的问题是,我真的很困惑,不清楚如何在这3个文件夹之间进行这种inheritance。

我做了以下testing,以查看手机上的行为(在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然后加载values-v14 values-v11和最终values
  • 如果设备在11和13之间的API上运行,则系统将加载values-v11 ,然后加载values
  • 如果设备在API版本<11上运行,则系统将仅加载values

如果确实是它的工作方式,那么在父文件夹values设置最大样式并仅在v11或v14中添加特定样式是否有意义?

对不起,很长的问题,我希望很明显,这个主题/样式系统只在Android指南中简要描述,很难find它的工作原理的信息…

谢谢你的帮助!

Solutions Collecting From Web of "样式和主题值,值-V11和值-V14文件夹"

更一般地说,我的问题是,这3个文件夹作为父母和孩子?

这些文件夹使用“最具体的”匹配系统,这意味着它将匹配最接近(较低)的API级别values文件夹:

  • values-v14目标API> = 14 (对于低于14版本,它将不会被选中)
  • values-v11针对(和包括) 1113之间的API(如果存在values-v14 ), 否则将匹配从11开始的每个版本和更高版本((对于低于11版本根本不会select)
  • values是默认的文件夹,它将是最后的匹配,覆盖其他API-level没有被其他values-xx文件夹覆盖。 您应该始终(与所有资源文件夹一样)在您的应用程序中包含此文件夹

如果确实是它的工作方式,那么在父文件夹值中设置最大样式并仅在v11或v14中添加特定样式是否有意义?

是的,这是如何构buildAndroid项目模板(当您使用Create new project... ),它实际上告诉你使用values-xx文件夹进行自定义(不同的外观,使用更新的样式,属性):

  <!-- in the styles.xml from the v-14 values folder: --> <!-- API 14 theme customizations can go here. -->