视图绑定出错:与属性android:visibility不兼容

cqoc49vn  于 2023-06-28  发布在  Android
关注(0)|答案(6)|浏览(162)

我正在尝试使用数据绑定设置ImageViewvisibilitysrc。我不知道为什么会出现这个错误,我真的相信这在某个时候是有效的,但我可能是错的。
布局:

<data>
    <import type="android.view.View" />
    <import type="android.support.v4.content.ContextCompat" />
    <variable
        name="viewData"
        type="com.myapp.SomethingViewData" />
</data>
    ...
        <ImageView
            ...
            android:src="@{ContextCompat.getDrawable(context, viewData.getIconResource())}"
            android:visibility="@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}" />

数据类

@Parcelize
data class SomethingViewData(val iconResource: Int,
                             val iconVisibility: Boolean) : Parcelable

错误信息:

error: '@{ContextCompat.getDrawable(context, viewData.getIconResource())}' is incompatible with attribute android:src (attr) reference|color.   
error: '@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}' is incompatible with attribute android:visibility (attr) enum [gone=2, invisible=1, visible=0].

这是什么意思,我该如何修复它?

9ceoxa92

9ceoxa921#

在我的例子中,缺少一个右括号导致这个错误弹出给我-我有:

android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE"

而不是:

android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE}"
p1tboqfb

p1tboqfb2#

我也遇到了同样的错误,并在这个网站的帮助下解决了它:https://codelabs.developers.google.com/codelabs/android-databinding/#2
我需要将ConstraintLayout转换为数据绑定布局,如本网站的这张图片所示:

也许这会帮助别人!

t3psigkw

t3psigkw3#

哇,所以,不知何故dataBinding { enabled = true }从我的应用程序模块构建.gradle文件中删除了。把它加回去,一切都像以前一样工作。

qnyhuwrf

qnyhuwrf4#

你的“getIconVisibility”返回一个整数,但是android:visibility(在你的XML文件中)需要一个枚举值:Visibility.Gone| Visibility.Visible | Visibility.Invisible

uujelgoq

uujelgoq5#

尝试在srcvisibility中使用单引号

android:src='@{ContextCompat.getDrawable(context, viewData.getIconResource())}'
android:visibility='@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}'
mwg9r5ms

mwg9r5ms6#

2023年,我只能这样使用它:

android:visibility="gone"

根据文档,布局XML的可能值为:

android:visibility="visible|invisible|gone"

您可以在这里查看文档:Android查看文档

相关问题