0

我的 Kotlin 应用程序中有一个枚举:

enum class MeasurementUnits(val displayString: String) {
    KILOGRAM("kg"),
    POUND("lbs"),
    KILOMETER("km"),
    MILE("mi"),
}

我想在我正在编写的复合视图中的自定义属性中使用此枚举,如下所示:

<com.myapp.MyCustomView
    android:id="@+id/distance"
    custom:display_units="KILOMETER" />

但是我看到将此属性定义为枚举的唯一方法是与枚举分开且与枚举无关,在attrs.xml

<attr name="input_units" format="enum">
   <enum name="KILOGRAM" value="0"/>
   <enum name="POUND" value="1"/>
   <enum name="KILOMETER" value="2"/>
   <enum name="MILE" value="3"/>
</attr>

这很奇怪,因为我再次重新定义了枚举,而且它非常脆弱——它们必须完全同步,任何更改都必须在同一个地方完成。我不想把它写成字符串,因为这也是超级脆弱的,但它稍微好一点——至少我不强制顺序相同。

有没有办法定义自定义枚举属性,并在我的代码中指向枚举类?或者至少确保列表是同步的?

这里的最佳做法是什么?

4

0 回答 0