styles multiple inheritance

Viewed 20138

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

For those who was looking for solution to just merge multiple different styles into one, you can use

public void applyStyle (int resId, boolean force)

https://developer.android.com/reference/android/content/res/Resources.Theme#applyStyle(int,%20boolean). And apply it that way

context.theme.applyStyle(R.style.MyAdditionalStyle, false)

Whenever you specify true as second argument, it overrides existing values in your theme, and when false it adds only non-overlapping values from R.style.MyAdditionalStyle

I haven't tested scenario with multiple styles yet, but according to docs you can achieve it. So that's how this approach can be used as an alternative to multiple inheritance.

Related