2

我已經將一個從布爾型到可見性的BindingConversion,但Android無法找到它,但只有當我在包含標記中使用它時。它適用於FrameLyout等其他元素。Android無法在包含標記中找到BindingConversion

在我的抽象的視圖模型:

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

然後在我的XML(TestViewModel從視圖模型繼承):

<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(布爾)

我正在使用Android Studio 2.2 RC。

+0

如果硬編碼的可見性,而不是使用數據綁定,它的工作? ''[未記錄爲支持任意屬性](https://developer.android.com/training/improving-layouts/reusing-layouts.html#Include)。 – CommonsWare

+0

不,錯誤:(142,30)錯誤:無法找到符號方法setVisibility(int) –

+1

然後推測'android:visibility'不可用於''。 – CommonsWare

回答

1

我不知道爲什麼這不起作用,但我認爲它的佈局標籤包含在內。您不能將這些標籤用於數據綁定。所以我刪除了包含,使用了viewstub並以編程方式更改了佈局。

相關問題