提供样式参数时是否可以引用 enum 值?
例如,我们可以这样做:
<!-- layouts.xml -->
<TextView
android:text="@string/str" />
<!-- values.xml -->
<item type="string" name="str">hi</item>
这适用于字符串,整数,维度等,但我需要引用 enum 值 - 例如visibility
属性。我正在寻找类似的东西:
<!-- layouts.xml -->
<TextView
android:visibility="@????/viz" />
<!-- values.xml -->
<item type="?????" name="viz">gone</item>
visibility
只是一个示例 - 它可以是任何其他基于枚举的属性。
到目前为止,我找到的唯一解决方法是使用 styles
<!-- 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" />
但我认为上述情况的可能性更小。
答案 0 :(得分: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"/>
我刚刚在手机上查看了它,效果很好。