2014-02-28 138 views
0

我的應用程序的文本可以是黑色或白色;小,中,大;和粗體或不粗體。我無法想出一種方法來製作覆蓋所有基地的樣式,而不是僅僅包含大量樣式並重復所有事情。是否有辦法減少這種情況或一次應用多個?Android風格繼承

<style name="Text"> 
    <item name="android:textSize">12sp</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:textStyle">normal</item> 
</style> 

<style name="Text.Small"> 
    <item name="android:textSize">8sp</item> 
</style> 

<style name="Text.Large"> 
    <item name="android:textSize">18sp</item> 
</style> 

<style name="Text.Small.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Text.Large.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Text.White"> 
    <item name="android:textColor">#ffffff</item> 
</style> 

<style name="Text.White.Small"> 
    <item name="android:textSize">8sp</item> 
</style> 

<style name="Text.White.Large"> 
    <item name="android:textSize">18sp</item> 
</style> 

<style name="Text.White.Small.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Text.White.Large.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

其中一半是字面上重複的,從不同的父風格繼承。我覺得這樣做在CSS中完成並不重要,而不需要重複所有這些。我堅持在Android中這樣做嗎?或者我在這裏忽略了什麼?

回答

0

我挖,但似乎沒有成爲一個辦法做到這一點本地到Android。我只是將它與每個樣式中的重複部分放在一起,並且足以說明這是它可以在此情況下使用的DRYest

0

爲避免代碼重複,您可以僅聲明該項目一次,並使用parent attribute將其從其他樣式中引用。

示例使用您提供的代碼:

<style name="Text.Small.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Text.Large.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

可以在改變:

<style name="Text.Small.Bold"> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Text.Large.Bold" parent="Text.Small.Bold" /> 
+0

它似乎不以這種方式工作。當我應用Text.Large.Bold樣式時,它僅從Text.Small.Bold父項獲取屬性。 – Dave