vki*_*ins 6 android android-styles
我知道我可以为不同的API级别添加不同的XML,例如,为值-v21和values-v19设置不同的样式.我想要了解的是构建系统如何实际使用这些不同的值?因此,例如,如果我在所有API中都有大部分样式,并且一个样式中的一个项目在21和其他样式之间发生变化,那么我是否:
1)将整个styles.xml复制到v21中,并更改我需要更改的一个值
2)只在v21下添加一个更改为styles.xml的样式
3)只添加那个在21下改变的一个样式的项目
令人困惑,我找不到任何文档,如何构建的进程处理合并样式.
Dmi*_*try 10
规则很明确:
如果选定的样式是子样式,则Android 会将其项目与父最佳匹配样式合并
如果您通过引用提供可变项,只需定义其值以匹配选定的api版本.
<style name="SomeStyle">
<item name="someColor">@color/some_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)您可以some_color.xml在color-v21文件夹中的API 21和该文件的一个共同版本color文件夹的所有其他API级别.
例:
您希望非v21 API具有以下样式
<style name="FinalStyle">
<item name="commonText">It\'s a common text</item>
<item name="specificDrawable">@drawable/icon</item>
<item name="specificColor">@color/primary_color</item>
<item name="specificText">non-v21</item>
</style>
Run Code Online (Sandbox Code Playgroud)
以及v21 API的以下样式
<style name="FinalStyle">
<item name="commonText">It\'s a common text</item>
<item name="specificDrawable">@drawable/icon</item>
<item name="specificColor">@color/secondary_color</item>
<item name="specificText">v21</item>
</style>
Run Code Online (Sandbox Code Playgroud)
v21/non-v21 API之间的特定参数不同,常见的参数很常见.
怎么做?
res/values/styles.xml
<style name="BaseStyle">
<item name="commonText">It\'s a common text</item>
<item name="specificDrawable">@drawable/icon</item>
</style>
<style name="FinalStyle" parent="BaseStyle">
<item name="specificColor">@color/primary_color</item>
<item name="specificText">non-v21</item>
</style>
Run Code Online (Sandbox Code Playgroud)res/values-v21/styles.xml
<style name="FinalStyle" parent="BaseStyle">
<item name="specificColor">@color/secondary_color</item>
<item name="specificText">v21</item>
</style>
Run Code Online (Sandbox Code Playgroud)res/drawable/icon.png
常见的图标
res/drawable-v21/icon.png
v21图标
当Android搜索FinalStylev21时,它会FinalStyle从res/values-v21最佳匹配样式中选择定义,并与之合并BaseStyle.在此示例中,当Android搜索时,还有另一个最匹配的资源搜索@drawable/icon.
| 归档时间: |
|
| 查看次数: |
3445 次 |
| 最近记录: |