Android数据绑定:包含标签的可见性

根据http://developer.android.com/tools/data-binding/guide.html#imports ,我们可以看到这样简单的expression式:

<TextView .. android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/> 

但是当我试图在include标签中做同样的事情时,像这样:

 <include android:id="@+id/image_layout" layout="@layout/image_layout" android:visibility="@{notification.notifType == 0 ? View.VISIBLE : View.GONE}"/> 

然后Studio不仅以红色显示expression式,而且在构build它时会在自动生成的绑定类中给出以下错误:

错误:(138,29)错误:找不到符号方法setVisibility(int)

这是自动生成的绑定类中发生错误的地方

 // batch finished if ((dirtyFlags & 0x3L) != 0) { // api target 1 this.imageLayout.setVisibility(NotifTypeNotificatio1); } imageLayout.executePendingBindings(); 

Solutions Collecting From Web of "Android数据绑定:包含标签的可见性"

我想象你正在做的事情是这样的:

在包含的布局中,指定布尔variables并将其绑定到所需视图的可见性

 <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.view.View"/> <variable name="isVisible" type="boolean"/> </data> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{isVisible ? View.VISIBLE : View.GONE}"/> </layout> 

然后在你的调用布局绑定你的价值

 <include android:id="@+id/image_layout" layout="@layout/image_layout" bind:isVisible="@{notification.notifType == 0}"/>