【发布时间】:2018-10-18 13:48:27
【问题描述】:
我正在尝试将ImageView 的enabled 值与ObservableInt 在三元运算符中使用数据绑定,如下所示:
<variable
name="myInt"
type="android.databinding.ObservableInt"/>
...
<ImageView
...
android:enabled='@{myInt > 1 ? false : true}'
...
/>
它完全按预期工作。
但是当我将表达式更改为
android:enabled='@{myInt < 1 ? false : true}'
它会抛出以下编译错误:
与元素类型“ImageView”关联的属性“android:enabled”的值不能包含“
为什么我可以检查myInt是否大于1但不能检查它是否小于1?
【问题讨论】:
-
也许您需要转义
<字符,因为 XML 解析器正在读取它作为开始一个新元素。不完全确定这样做的语法,但这是我的猜测。 -
@ThomasCook 完全正确。但是为什么不像
android:enabled='@{myInt > 1}'那样改变false和true应该可以解决问题 -
@Thomas 你说得对!它就像一个魅力。
-
我知道,我知道脸红
-
@Pierre 你也是对的,但可能并非在所有情况下都是可能的。
标签: android data-binding ternary-operator android-databinding