如何在使用dataBinding
时使用三元运算符包含布局?
我正在尝试通过一些TextView
的文本长度来包含不同的布局。
这是我的xml
代码:
<include
android:id = "@+id/toolbar_write"
layout = "@{textTitle.length > 0 ? @layout/toolbar_write : @layout/toolbar_show}"
/>
在预览中没有包含任何内容。
我错过了什么吗?
如何在使用dataBinding
时使用三元运算符包含布局?
我正在尝试通过一些TextView
的文本长度来包含不同的布局。
这是我的xml
代码:
<include
android:id = "@+id/toolbar_write"
layout = "@{textTitle.length > 0 ? @layout/toolbar_write : @layout/toolbar_show}"
/>
我在遇到和你一样的错误后找到了这个问题:
包含的值(@{data.someBoolean ? @layout/a : @layout/b})必须以@layout/开头。
我怀疑这是不可能的,因为数据绑定从布局生成代码,包括任何嵌套的布局。例如,如果foo.xml声明<include android:id="@+id/bar" layout="@layout/bar" />
,而bar.xml定义<TextView android:id="@+id/greeting">
,生成的FooBindingImpl
允许您执行以下操作:fooBinding.bar.greeting.setText("hello")
。
例如,当您使用三元运算符来设置文本视图的文本时,一个变量的运行时值决定传递给TextView#setText()
的值。但是,在<include>
上的layout
的值会影响应该生成什么代码。