【问题标题】:Android attribute of custom type?自定义类型的Android属性?
【发布时间】: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


    【解决方案1】:

    我认为没有必要只用不同的名称多次定义相同的属性检查这个链接: Define Custom Attributes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      相关资源
      最近更新 更多