【问题标题】:Custom visibility xml params自定义可见性 xml 参数
【发布时间】:2023-03-11 09:59:01
【问题描述】:

我想为我的一个自定义视图创建一个新的 xml 参数,以处理其中某些内容的可见性。我当然可以用其他方式来做,但我想用一种可以使用普通 android 参数来改变它的方式来做。

类似:

<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].

该属性可用的其他类型似乎不适用于这种情况。

有没有办法做到这一点?

【问题讨论】:

  • 尝试这里描述的枚举类型stackoverflow.com/a/54341705/9241978
  • 返回类型是 View.Visible 的枚举 | View.Gone.. 不是整数
  • 认为会有更好的方法来做到这一点,这要归功于两者

标签: android view visibility custom-attributes


【解决方案1】:

基于@Pawel 和@Sam cmets,我创建了一个专门的枚举属性,如下所示:

<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);

所以感觉就像“原始”的一样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多