2016-03-29 134 views
0

我有以下樣式:自定義類型的Android屬性?

<attr name="coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 

我想相同的風格多次申請這樣的:

<declare-styleable name="ComplicatedViewGroup"> 
    <attr name="child1coloring" **format="coloring"**/> 
    <attr name="child2coloring" **format="coloring"**/> 
    <attr name="child3coloring" **parent="coloring"**/> 
    <attr name="child4coloring" **parent="coloring"**/> 
    <attr name="child5coloring" **super="coloring"**/> 
</declare-styleable> 

或者類似的東西。我想要輕鬆地使用相同的attr自定義子視圖。如果這是不可能的,這得到非常混亂和大,速度非常快:

<attr name="coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 

<declare-styleable name="ComplicatedViewGroup"> 
    <attr name="child1coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 
    <attr name="child2coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 
    <attr name="child3coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 
    <attr name="child4coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 
    <attr name="child5coloring" format="enum"> 
    <enum name="Custom" value="0"/> 
    <enum name="Black" value="1"/> 
    <enum name="Gray" value="2"/> 
    <enum name="LightGray" value="3"/> 
    <enum name="White" value="4"/> 
</attr> 
</declare-styleable> 

由於所有這些樣式使用完全相同的格式和屬性,我有一個函數來處理任何觀點和着色值傳遞給它。問題是我希望能夠添加更多的顏色和/或功能。所以如果我改變它,我必須改變它們。這是非常單調乏味的,而且進行修改所花費的時間卻成倍增加。

如何爲聲明樣式中的屬性設置父/超/自定義格式?

回答