styles multiple inheritance

2020-02-24 07:24发布

问题:

Is there any way to make a style inherit from multiple other styles, instead of just being limited to:

<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>

I would like BOSText to also inherit from:

<style name="WidgetTextHeader">
    <item name="android:textStyle">bold</item>
<style>

回答1:

No, styles do not support multiple inheritance (at least not as of Android 3.2).



回答2:

You can only inherit one style. However, you can also make the inherited style inherit from another style, and so on:

<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>

You can't inherit more than one style, but you can set up an inheritance chain.



回答3:

There is a parent attribute on the style tag that should let you inherit from other styles...

i.e.

<style name="CodeFont" parent="@style/WidgetTextBase">
   <item name="android:textStyle">bold</item>
</style>

http://developer.android.com/guide/topics/ui/themes.html