繁体   English   中英

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

[英]Viewbinding with error: incompatible with attribute android:visibility

我正在尝试使用数据绑定设置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]. 

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

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

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

代替:

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

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

我需要将我的 ConstraintLayout 转换为数据绑定布局,如本网站的这张图片所示: 在此处输入图片说明

也许这会帮助某人!

哇,所以,不知何故dataBinding { enabled = true }从我的应用程序模块 build.gradle 文件中删除。 重新添加它,一切都像以前一样。

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

尝试在srcvisibility使用单引号

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM