我有一个包含多种产品风格的模块(在这个例子中是' foo')。基本主题(样式)在模块中定义。
现在我的想法是通过在#flavor#/ res / values /文件夹中添加styles.xml来修改这个主题,并使用库项目机制扩展样式,就像之前在Eclipse中所做的那样。但显然完整的风格被覆盖。我的意图是,gradle正确地将文件合并在一起。
main_styles:
<style name="Theme.Main" parent="android:Theme.Light">
<item name="android:title">A title</item>
<item name="android:subtitle">A subtitle</item>
</style>
foo_styles:
<style name="Theme.Main" parent="android:Theme.Light">
<item name="android:background">@color/foo</item>
</style>
我的期望:
<style name="Theme.Main" parent="android:Theme.Light">
<item name="android:title">A title</item>
<item name="android:subtitle">A subtitle</item>
<item name="android:background">@color/foo</item>
</style>
我得到了什么:
<style name="Theme.Main" parent="android:Theme.Light">
<item name="android:background">@color/foo</item>
</style>
有什么建议吗?
答案 0 :(得分:1)
如果它们具有相同的名称,它们只会合并。称他们为styles.xml
。
编辑:您似乎无法:https://groups.google.com/forum/#!topic/adt-dev/sQTsk35U7Ic
答案 1 :(得分:1)
合并是不可能的,但是通过这种方式可以达到同样的效果(AndroidManifest 指的是 foo,foo 指的是 main,main 指的是 android:Theme.Light)...
// AndroidManifest.xml
<application ... android:theme="@style/MyStyleFoo" ...>
// src/main/res/values/styles.xml
<resources>
<style name="MyStyleMain" parent="android:Theme.Light">
<item name="android:title">A title</item>
<item name="android:subtitle">A subtitle</item>
</style>
</resources>
// src/foo/res/values/styles.xml
<resources>
<style name="MyStyleFoo" parent="MyStyleMain">
<item name="android:background">@color/foo</item>
</style>
</resources>