我在xml文件中遇到此代码的问题,但有错误: msg:标识符必须具有XML文件中的用户定义类型。视图缺少它。 我想根据某些条件隐藏布局。
<include
layout="@layout/test_ui"
android:visibility="@{(viewModel.valueFormat==001) ? View.VISIBLE : View.GONE}"
bind:viewModel="@{viewModel}" />
答案 0 :(得分:7)
你需要导入它。添加
<import type="android.view.View"/>
在数据部分。您还可以为它添加一个BindingAdapter,它接受一个布尔值并执行相同的操作。 E.g。
@BindingAdapter({"visibility"})
public static void setVisibility(View view, boolean visible) {
view.setVisibility(visible ? View.VISIBLE : View.GONE);
}
然后你就像使用它一样:
visibility="@{viewModel.valueFormat==001}
答案 1 :(得分:1)
另一种选择是使用BindingConversion
:
@BindingConversion
fun convertBooleanToVisibility(visible: Boolean): Int {
return if (visible) View.VISIBLE else View.GONE
}
然后你可以简单地使用
android:visbility="@{booleanVariable}