重新使用Android自定义枚举xml属性
我正在XML中定义一个自定义属性,它是一个枚举。它看起来像这样:重新使用Android自定义枚举xml属性,android,enums,custom-attributes,Android,Enums,Custom Attributes,我正在XML中定义一个自定义属性,它是一个枚举。它看起来像这样: <declare-styleable name="MyControl"> <attr name="myProperty"> <enum name="None" value="0"/> <enum name="One" value="1"/> <enum name="Two" value="2"/> &
<declare-styleable name="MyControl">
<attr name="myProperty">
<enum name="None" value="0"/>
<enum name="One" value="1"/>
<enum name="Two" value="2"/>
<enum name="Three" value="3"/>
<enum name="Four" value="4"/>
<enum name="Five" value="5"/>
<enum name="Six" value="6"/>
<enum name="Seven" value="7"/>
<enum name="Eight" value="8"/>
<enum name="Nine" value="9"/>
<enum name="Ten" value="10"/>
</attr>
</declare-styleable>
假设现在我想要另一个不相关的类使用同一组枚举值。有没有一种方法可以做到这一点,而不必在新节点的新节点中复制枚举列表?。例如,语义如下的东西:
<declare-styleable name="MyUnrelatedControl">
<attr name="myProperty" format="[myEnum Format Reference]"/>
</declare-stylable>
只需定义您无法控制的属性:
<attr name="myProperty" format="enum">
<enum name="None" value="0"/>
<enum name="One" value="1"/>
<enum name="Two" value="2"/>
<enum name="Three" value="3"/>
<enum name="Four" value="4"/>
<enum name="Five" value="5"/>
<enum name="Six" value="6"/>
<enum name="Seven" value="7"/>
<enum name="Eight" value="8"/>
<enum name="Nine" value="9"/>
<enum name="Ten" value="10"/>
</attr>
然后将其重新用于所有控件:
<declare-styleable name="MyControl">
<attr name="myProperty"/>
</declare-styleable>
<declare-styleable name="MyUnrelatedControl">
<attr name="myProperty"/>
</declare-styleable>
完美。非常感谢。也许您会知道,是否有一种方法可以在同一对象中使用相同枚举的两个不同属性来执行此操作。例如,我的类同时具有属性_myProperty和_myOtherProperty,这两个属性都可以具有相同的枚举值?这是一个很好的问题。不幸的是,我不知道有什么方法可以做到这一点,尽管它似乎应该存在。可能值得研究Android源代码如何定义layout\u width
和layout\u height
,或者类似的东西,因为我想象他们会重用wrap\u content
和match\u parent
。从Android源代码来看,他们每次都会定义它们,所以我假设可能没有办法进一步简化它。我这里有额外的要求,来自Java文件也像ellipsize那么如何使用它我想访问Java文件中的枚举我们可以对edittext的ellipsize做同样的事情吗???