我想为我的一个自定义视图创建一个新的xml参数,以处理其中某些内容的可见性。我当然可以通过其他方式来做到这一点,但是我想以一种可以使用常规android params对其进行更改的方式来做到这一点。
类似:
<MyCustomView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:my_custom_visibility="gone"/>
所以我勉强做
viewToBeHidden.visibility = a.getInt(R.styleable.my_custom_view_my_custom_visibility, View.Visible);
我尝试过,因为可见性是整数,但它不允许我放入视图声明中
<attr name="my_custom_visibility" format="integer" />
使用
<attr name="my_custom_visibility" format="reference" />
导致编译错误:
AAPT: error: 'gone' is incompatible with attribute my_custom_visibility (attr) reference [weak].
该属性可用的其他类型似乎不适用于这种情况。
有没有办法做到这一点?
基于@Pawel和@Sam注释,我创建了一个专用的枚举属性,如下所示:
<attr name="my_custom_visibility" format="enum">
<enum name="gone" value="8" />
<enum name="invisible" value="4" />
<enum name="visible" value="0" />
</attr>
并在视图中像这样使用它:
viewToBeHidden.visibility = attrs.getInt(R.styleable.my_custom_view_my_custom_visibility, View.VISIBLE);
所以感觉就像“原始的”