Android在include标签中找不到BindingConversion

时间:2016-09-16 19:39:04

标签: java android android-layout android-xml android-databinding

我已经从布尔到可见性进行了BindingConversion,但Android无法找到它,但只有当我在include标签中使用它时才能找到它。它适用于其他元素,如FrameLyout。

在我的抽象ViewModel中:

@BindingConversion
public static int convertBooleanToVisibility(boolean visible) {
    return visible ? View.VISIBLE : View.GONE;
}

然后在我的xml中(TestViewModel继承自ViewModel):

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="viewModel"
            type="oliveradam.testapp.viewmodels.TestViewModel"/>
    </data>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            app:theme="@style/toolbarStyleMusicView"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:minHeight="?attr/actionBarSize">
        </android.support.v7.widget.Toolbar>
        <include
            android:visibility="@{viewModel.isVisible}"
            layout="@layout/layout_test"
            app:viewModel="@{viewModel}" />
    </LinearLayout>
</layout>

错误:(139,29)错误:找不到符号方法setVisibility(boolean)

我正在使用Android Studio 2.2 RC。

1 个答案:

答案 0 :(得分:1)

我不知道为什么这不起作用,但我认为它的布局标签包含在内。您不能将这些标签用于数据绑定。所以我删除了包含,使用了viewstub并以编程方式更改了布局。