有没有办法让样式继承多个其他样式,而不仅仅局限于:
<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>
Jon*_*nas 32
不,样式不支持多重继承(至少不支持Android 3.2).
您只能继承一种样式。但是,您也可以使继承的样式从另一个样式继承,依此类推:
<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>
不能继承多个样式,但可以设置继承链。
小智 5
对于那些正在寻找将多种不同样式合并为一种解决方案的人,您可以使用
public void applyStyle (int resId, boolean force)
context.theme.applyStyle(R.style.MyAdditionalStyle, false)
每当您指定true为第二个参数时,它都会覆盖主题中的现有值,并且当false它仅添加来自R.style.MyAdditionalStyle
我还没有测试多种样式的场景,但根据文档你可以实现它。这就是如何使用这种方法来替代多重继承。