4

提供样式参数时是否可以引用枚举值?
例如,我们可以这样做:

<!-- layouts.xml -->
<TextView
    android:text="@string/str" />

<!-- values.xml -->
<item type="string" name="str">hi</item>

这适用于字符串、整数、维度等,但我需要引用枚举值 - 例如visibility属性。我正在寻找类似的东西:

<!-- layouts.xml -->
<TextView
    android:visibility="@????/viz" />

<!-- values.xml -->
<item type="?????" name="viz">gone</item>

visibility只是一个例子 - 它可以是任何其他基于枚举的属性。

到目前为止,我发现的唯一解决方法是使用样式

<!-- layouts.xml -->
<TextView
    android:style="@styles/theStyle" />

<!-- styles.xml -->
<style name="theStyle">
    <item name="android:visibility">gone</item>
</style>

但这在某种程度上是有限制的,因为如果您需要使用带有 TextViews 的真实样式以及仅用于控制单个属性的特殊样式,它会变得越来越复杂。

如果有一种方法可以引用单个样式项,则另一种选择是。就像是:

<TextView
    android:visibility="@styles/theStyle/visibility" />

但我认为上述情况更不可能发生。

4

1 回答 1

3

每个枚举实际上是一组命名整数。例如,visibility属性声明如下:

<attr name="visibility">
    <enum name="visible" value="0" />
    <enum name="invisible" value="1" />
    <enum name="gone" value="2" />
</attr>

所以你可以直接通过它的值来引用枚举项。像这样的东西:

<!-- values.xml -->
<item name="viz" type="integer">1</item>

<!-- layouts.xml -->
<TextView
    android:visibility="@integer/viz"/>

我刚刚在我的手机上检查了它,它运行良好。

于 2013-01-06T05:52:58.403 回答