2010-07-15 4 views
33

Есть ли способ сделать наследовать стиль от многих других стилей, вместо того, чтобы просто быть ограничена:стили множественного наследования

<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

Возможно, это полезно? http://stackoverflow.com/questions/4851175/how-to-apply-two-different-styles-to-one-element-in-android/4893402#4893402 – Bruiser

ответ

24

Нет, стили не поддерживает множественное наследование (по крайней мере, не так Андроида 3.2).

+3

Извините, но вы ошибаетесь. См. Ссылку http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles –

+20

Вы неправильно поняли вопрос (см. Мой комментарий к вашему ответу ниже). Вы правы в том, что вы можете построить цепочки наследования стилей типа A> B> C. Вопрос, хотя был, можно было бы сделать (A, B)> C. I.e., стиль наследуется от двух независимых цепочек наследования. – Jonas

-1

В теге стиля есть родительский атрибут, который должен позволять вам наследовать от других стилей ...

ie

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

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

+8

Проблема в том, что я хотел бы иметь несколько родительских атрибутов , – NPike

0

Вы можете наследовать только один стиль. Тем не менее, вы можете также сделать унаследованную наследует стиль от другого стиля, и так далее:

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

Вы не можете унаследовать более одного стиля, но вы можете создать цепочку наследования.

Смежные вопросы