从代码中访问XML枚举值

时间:2013-01-25 00:15:54

标签: java android enums declare-styleable

我已经使用枚举值声明了一个可设置属性,如下所示:

<declare-styleable name="TileLayout">
    <attr name="rotation" format="integer">
        <enum name="top" value="0"/>
        <enum name="left" value="1"/>
        <enum name="right" value="2"/>
        <enum name="bottom" value="3"/>
    </attr>
</declare-styleable>

现在我想在我的代码中引用这些内容,最好是在switch语句中。

除了将枚举中的值硬编码到我的代码中之外,我找不到任何其他的方法(首先要击败enum目的的一半)。

有谁知道怎么做?

修改

Per @ CommonsWare的回答,尝试了这个:

resources.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="rotation_top">0</integer>
</resources>

attrs.xml:

<resources>
    <declare-styleable name="TileLayout">
        <attr name="rotation" format="integer">
            <enum name="top" value="@integer/rotation_top"/>
            <enum name="left" value="1"/>
            <enum name="right" value="2"/>
            <enum name="bottom" value="3"/>
        </attr>
    </declare-styleable>
</resources>

这导致top不再是rotation的可接受值。

1 个答案:

答案 0 :(得分:2)

您可以尝试将值定义为integer resources并在其他地方引用资源(您的attrs.xml和Java)。

但是,IIRC,如果没有用Java硬编码,switch语句是不可能的,因为switch语句需要case子句的常量值。