使用三元运算符在数据绑定时包含布局

3

如何在使用dataBinding时使用三元运算符包含布局?

我正在尝试通过一些TextView的文本长度来包含不同的布局。

这是我的xml代码:

<include
   android:id = "@+id/toolbar_write"
   layout = "@{textTitle.length > 0 ? @layout/toolbar_write : @layout/toolbar_show}"
 />

在预览中没有包含任何内容。
我错过了什么吗?
1个回答

0

我在遇到和你一样的错误后找到了这个问题:

包含的值(@{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的值会影响应该生成什么代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接