[英]Use ternary operator for visibility in Android MVVM databinding
我在xml文件中遇到此代码的问题,并出现错误:msg:标识符必须具有XML文件中的用户定义类型。 视图丢失了。 我想根据某些条件隐藏布局。
<include
layout="@layout/test_ui"
android:visibility="@{(viewModel.valueFormat==001) ? View.VISIBLE : View.GONE}"
bind:viewModel="@{viewModel}" />
您需要导入它。 加
<import type="android.view.View"/>
在数据部分。 您还可以为其添加一个boolean并执行相同操作的BindingAdapter。 例如
@BindingAdapter({"visibility"})
public static void setVisibility(View view, boolean visible) {
view.setVisibility(visible ? View.VISIBLE : View.GONE);
}
然后像这样使用它:
visibility="@{viewModel.valueFormat==001}
另一种选择是使用BindingConversion
:
@BindingConversion
fun convertBooleanToVisibility(visible: Boolean): Int {
return if (visible) View.VISIBLE else View.GONE
}
然后,您可以只使用android:visbility="@{booleanVariable}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.