风格和主题的价值观,价值观,V11和值-V14夹(Styles and themes on valu

2019-09-15 05:20发布

我目前正在对我的应用程序的基础上的全息主题设计。 在全球范围内是我想要做的是工作,但我有点困惑的是正在工作的文件夹的方式valuesvalues-v11values-v14

所以我知道:

  • values的目标是在API次于11
  • values-v11的目标是11和13之间的API
  • values-v14的目标是优于13的API

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

我的问题是,我真的很困惑,如何工作的这3个文件夹之间的这种继承并不了解清楚。

我没有为了看我的手机上的行为,下列测试(在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-v11和最后values
  • 如果设备11和13之间的API运行时,系统将加载values-v11 ,然后values
  • 如果该设备上的API版本<11运行时,系统将只加载values

如果它确实是它的工作方式,是否有意义,然后设置最大的风格在父文件夹values和V11或V14只添加特定的人?

很抱歉的长期问题,我希望它是明确的,这个主题/风格的系统仅在Android指南中简要介绍,这是很难找到它是如何工作的信息...

谢谢你的帮助!

Answer 1:

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

这些文件夹与“最具体的”匹配系统工作的意义,它将匹配最接近(较低)API级别values的文件夹:

  • values-v14目标的API> = 14 (它不会在所有被选择用于下面版本14
  • values-v11目标之间(并包括)的API 1113 ,如果values-v14是本否则它将匹配每一个版本的开始11和上述((它不会被在所有被选择为低于版本11 ))
  • values是默认的文件夹,这将是最后一个进行匹配,覆盖未涉及的另一其他的API等级values-xx文件夹。 你应该总是(与所有资源文件夹)有这个文件夹中的应用

如果它确实是它的工作方式,是否有意义,然后设置最大的风格在父文件夹值和V11或V14只添加特定的人?

是的,这是Android项目模板是如何构建的(当您使用Create new project... ),它实际上告诉了你使用values-xx定制文件夹(不同的外观,使用较新的款式,属性):

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


文章来源: Styles and themes on values, values-v11 and values-v14 folders