Yoa*_*uet 30 android android-theme android-styles
我目前正在开发我的应用程序,将其设计基于Holo主题.在全球范围内我想要做的是工作,但我对工作文件夹的方式有点困惑values,values-v11并且values-v14.
所以我知道:
values 目标API低于11values-v11 目标是11到13之间的APIvalues-v14 目标API优于13起初我以为我必须为每个文件夹指定应用程序所需的所有样式,但后来我意识到了一种继承系统.
我的问题是我真的很困惑,并且不清楚如何在这3个文件夹之间进行这种继承.
我做了以下测试,以便查看手机上的行为(在Android 4.0上运行,因此该文件夹values-v14应该是加载的文件夹):
在values我有一个样式设置为蓝色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>
Run Code Online (Sandbox Code Playgroud)
在values-v11我有一个样式设置为白色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
Run Code Online (Sandbox Code Playgroud)
在values-v14我有一个样式设置为红色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>
Run Code Online (Sandbox Code Playgroud)
对于上面的第一种情况(每个文件夹具有不同的颜色),我的文本上加载的颜色为红色,表示values-v14文件夹获得优先级.
然后,如果我从values-v14文件夹中注释掉红色样式,则文本变为白色.这是否意味着values-v11即使设备定位到values-v14文件夹,系统也会采用文件夹中的样式?我认为它可能values默认使用该文件夹但不是values-v11.
更一般地说,我的问题是,这三个文件夹是作为父母和孩子工作吗?意思是:
values-v14然后values-v11,最后values.values-v11然后values.values.如果它确实是它的工作方式,那么在父文件夹中设置最大样式values并在v11或v14中只添加特定的样式是否有意义?
很抱歉这个很长的问题,我希望很清楚,这个主题/样式系统只在Android指南中简要描述,很难找到有关它如何工作的信息......
谢谢你的帮助!
Luk*_*rog 26
更一般地说,我的问题是,这三个文件夹是作为父母和孩子工作吗?
这些文件夹使用"最具体"的匹配系统,这意味着它将匹配最近(较低)的API级别values文件夹:
values-v14目标API> = 14(以下版本根本不会选择它14)values-v11目标API(包括)之间的API 11和13if values-v14存在,否则它将匹配从11以上开始的每个版本((以下版本将不会选择它11))values是默认文件夹,它将是最后匹配的values-xx文件夹,涵盖其他文件夹未涵盖的其他API级别.您应始终(与所有资源文件夹一样)在您的应用中包含此文件夹如果它确实是它的工作方式,那么在父文件夹值中设置最大样式并在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. -->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11854 次 |
| 最近记录: |