【发布时间】:2016-03-29 20:03:19
【问题描述】:
我有以下风格:
<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>
由于所有这些样式都使用完全相同的格式和属性,我有一个函数可以处理传递给它的任何视图和着色值。问题是我希望能够添加更多颜色和/或功能。所以如果我改变一个,我必须改变所有的。这非常乏味,而且进行更改所需的时间成倍增加。
如何在可声明样式中为属性设置父/超级/自定义格式?
【问题讨论】:
标签: android xml inheritance attributes