我试图显示和隐藏基于布尔值的元素。在我的xml中,我有以下内容:
android:visibility="@{viewModel.interfaceEnable ? visible : gone}"
viewModel.interfaceEnable
本身就是一个ObservableField:var interfaceEnable = ObservableField<Boolean>()
。 visible
和gone
是android:visibility
属性的值。但我收到此错误:
****/ data binding error ****msg:Identifiers must have user defined types from the XML file. visibile is missing it
为什么此方法无法设置此属性?
答案 0 :(得分:3)
您应按以下方式使用View
来使用常量:
android:visibility="@{viewModel.interfaceEnable ? View.VISIBLE : View.GONE}"
有关更多信息,请检查您可以使用Visibility documentation,View.GONE
和View.INVISIBLE
的View.VISIBLE
还要确保为此使用了正确的导入类型,
<data>
<import type="android.view.View" />
<variable
name="anyName"
type="com.example.AnyName"/>
</data>
答案 1 :(得分:1)
可见和消失在View(View.VISIBLE
和View.GONE
)中仍然是常量,并且该语句应该反映出来
android:visibility="@{viewModel.interfaceEnable ? View.VISIBLE : View.GONE}"
或者,您冷使用一个简单的绑定适配器。 EG
@BindingAdapter("toVisibility")
fun View.toVisibility(visible: Boolean) {
visibility = if (visible) { View.VISIBLE } else { View.GONE }
}
,在您的xml中使用
toVisibility="@{viewModel.interfaceEnable}"