2010-07-15 41 views
33

Có cách nào để thực hiện một kế thừa phong cách từ nhiều phong cách khác, thay vì chỉ được giới hạn:phong cách đa kế thừa

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

Tôi muốn BOSText cũng kế thừa từ:

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

Điều này có thể hữu ích không? http://stackoverflow.com/questions/4851175/how-to-apply-two-different-styles-to-one-element-in-android/4893402#4893402 – Bruiser

Trả lời

24

Không, phong cách không hỗ trợ đa kế thừa (ít nhất không phải là Android 3.2).

+3

Xin lỗi, nhưng bạn đã sai. Xem liên kết http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles –

+20

Bạn hiểu nhầm câu hỏi (xem nhận xét của tôi về câu trả lời của bạn bên dưới). Bạn đúng rằng bạn có thể xây dựng các chuỗi kế thừa kiểu như A> B> C. Câu hỏi đặt ra là liệu bạn có thể làm (A, B)> C. I.e, một kiểu được kế thừa từ hai chuỗi kế thừa độc lập. – Jonas

-1

Có một thuộc tính cha mẹ trên thẻ kiểu cho phép bạn kế thừa từ các kiểu khác ...

tức là

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

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

+8

Vấn đề là, tôi muốn có nhiều thuộc tính gốc . – NPike

0

Bạn chỉ có thể kế thừa một kiểu. Tuy nhiên, bạn cũng có thể làm cho kế thừa thừa hưởng phong cách từ một kiểu khác, và vân vân:

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

Bạn không thể kế thừa nhiều hơn một phong cách, nhưng bạn có thể thiết lập một chuỗi thừa kế.