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

时间:2018-11-08 07:03:09

标签: android kotlin android-databinding android-architecture-components

我正在尝试使用数据绑定设置visibility的{​​{1}}和src。我不知道为什么会出现此错误,而且我确实相信这在某一时刻起作用,但是我可能是错的。

布局:

ImageView

数据类

<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

这是什么意思,我该如何解决?

5 个答案:

答案 0 :(得分:8)

我遇到了同样的错误,并在以下网站的帮助下解决了该问题:https://codelabs.developers.google.com/codelabs/android-databinding/#2

我需要将ConstraintLayout转换为数据绑定布局,如本网站上的图片所示: enter image description here

也许这会帮助某人!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您的“ getIconVisibility”返回一个整数,但是android:visibility(在XML文件中)需要一个枚举值:Visibility.Gone |可见性。可见性不可见

答案 3 :(得分:0)

  

尝试在srcvisibility中使用单引号

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

答案 4 :(得分:0)

在我的情况下,缺少一个右括号导致此错误为我弹出-我有:

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

代替:

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