2017-04-21 78 views
1

我有两种风格,给他们打电话A和B.是否有可能之一:是否可以将多个样式合并为一个?

  1. 他们都适用于相同的用户界面元素,或

  2. 两者结合成一个单一的风格(基本上只是让我 完成1))

我知道,风格可以从父母继承,所以我可以做一些喜欢做的是从A继承了C风格,并从复制的所有属性STYL e B转换成C风格。但是这相当于打败了我要做的事情 - 我将样式分为A和B两种样式,以避免重复代码,并将属性复制到C中完全废弃。

+2

样式不支持多重继承。同时相关:https://stackoverflow.com/questions/12614707/android-xml-theme-inheriting-from-two-parent-themes – akash93

回答

1

继承多个样式不被支持。但是,您可以创建基本样式,其中包含AB中的所有相同内容。然后从它继承。

<style name="SuperTheme" parent="android:Theme"> 
    <!--All the attributes that A and B will have in common. --> 
</style> 

<style name="A" parent="SuperTheme"> 
    <!--Unique attributes only in A. --> 
</style> 

<style name="B" parent="SuperTheme"> 
    <!--Unique attributes only in B. --> 
</style> 
+0

这并没有解决我的问题。我正在寻找一种将样式A和B的所有属性合并为一个的方法。基本上,我正在寻找一种A和B联合的风格,而您的示例使用的是A和B的交集。不幸的是,这并没有帮助。 – Mark

+0

@Mark由于样式不存在多重继承,因此您必须自己完成A和B的联合。然而,当你开始这样做时,你会注意到你有一种设计气味,因为你将失去灵活性。我仍然推荐我的方法。 –

+0

你的方法没有解决我所说的问题。为了说明这一点,让我问你以下问题:如何使用你的方法将两种样式A和B的所有属性应用于单个视图? 你似乎仅仅是一般信奉风格的继承,虽然它在某些情况下,一个有用的设计,它是完全垂直于我的问题。 – Mark

相关问题