有没有办法让样式继承多个其他样式,而不仅限于:
<style name="WidgetTextBase">
<item name="android:typeface">serif</item>
<item name="android:textSize">12dip</item>
<item name="android:gravity">center</item>
</style>
<style name="BOSText" parent="WidgetTextBase">
<item name="android:textColor">#051C43</item>
</style>
我希望BOSText也继承自:
<style name="WidgetTextHeader">
<item name="android:textStyle">bold</item>
<style>
答案 0 :(得分:28)
不,样式不支持多重继承(至少不支持Android 3.2)。
答案 1 :(得分:4)
您只能继承一种风格。但是,您也可以使继承的样式继承自另一个样式,依此类推:
<style name="WidgetTextBase">
<item name="android:typeface">serif</item>
<item name="android:textSize">12dip</item>
<item name="android:gravity">center</item>
</style>
<style name="WidgetTextHeader" parent="WidgetTextBase">
<item name="android:textStyle">bold</item>
</style>
<style name="BOSText" parent="WidgetTextHeader">
<item name="android:textColor">#051C43</item>
</style>
您不能继承多种样式,但可以设置继承链。
答案 2 :(得分:1)
对于那些正在寻求将多种样式合并为一种样式的解决方案的人,可以使用
public void applyStyle (int resId, boolean force)
context.theme.applyStyle(R.style.MyAdditionalStyle, false)
每当您将true
指定为第二个参数时,它就会覆盖主题中的现有值,而当false
时,它将仅添加来自R.style.MyAdditionalStyle
的非重叠值
我还没有测试多种样式的场景,但是根据文档,您可以实现它。这就是这种方法可以用作多重继承的替代方法的方式。
答案 3 :(得分:-1)
样式标记上有一个父属性,可以让你继承其他样式......
即
<style name="CodeFont" parent="@style/WidgetTextBase">
<item name="android:textStyle">bold</item>
</style>