【问题标题】:Android data binding ternary operator errorAndroid数据绑定三元运算符错误
【发布时间】:2018-10-18 13:48:27
【问题描述】:

我正在尝试将ImageViewenabled 值与ObservableInt 在三元运算符中使用数据绑定,如下所示:

<variable
            name="myInt"
            type="android.databinding.ObservableInt"/>
...
<ImageView
        ...
        android:enabled='@{myInt > 1 ? false : true}'
        ...
        />

它完全按预期工作。

但是当我将表达式更改为

android:enabled='@{myInt &lt; 1 ? false : true}'

它会抛出以下编译错误:

与元素类型“ImageView”关联的属性“android:enabled”的值不能包含“

为什么我可以检查myInt是否大于1但不能检查它是否小于1?

【问题讨论】:

  • 也许您需要转义 &lt; 字符,因为 XML 解析器正在读取它作为开始一个新元素。不完全确定这样做的语法,但这是我的猜测。
  • @ThomasCook 完全正确。但是为什么不像android:enabled='@{myInt &gt; 1}'那样改变false和true应该可以解决问题
  • @Thomas 你说得对!它就像一个魅力。
  • 我知道,我知道脸红
  • @Pierre 你也是对的,但可能并非在所有情况下都是可能的。

标签: android data-binding ternary-operator android-databinding


【解决方案1】:

您需要为 xml 转义字符,如下所示:

android:enabled="@{myInt &lt; 1 ? false : true}"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-11-19
  • 2015-07-15
  • 1970-01-01
  • 2018-04-11
  • 2014-05-03
  • 2017-05-12
  • 2012-11-19
  • 1970-01-01
相关资源
最近更新 更多