android - Android XML 布局中条件语句的语法

标签 android xml android-databinding

通过数据绑定(bind),我们现在经常在布局文件中看到如下代码:

<Variable name="displayIt" type="Boolean"/>

然后:

android:visibility="@{displayIt ? View.VISIBLE : View.GONE}"

(当然必须先导入android.view.View,View.VISIBLE和View.GONE才有意义)

这使得控制 View 变得更加容易。 它还告诉我在 XML 布局中允许使用条件语句,但看起来我的 google-fu 很弱,我试过但找不到它的语法。 如果我想使用文字怎么办?比如:

android:text="{@isValid ? "valid" : "invalid"}"

(是的,我知道这是一种愚蠢的做法,我只是在谈论这里的语法)。 或者资源 ID 呢?也许像:

android:color="@{isValid ? R.color.green : R.color.red}"

可以吗?正确的语法是什么?

最佳答案

调用数据绑定(bind)语句的正确语法类似于 "@{<some expression>}" ,因此三元条件将是

"@{bool ? ifTrue : ifFalse}"

这两个值将是您通常在没有数据绑定(bind)的情况下放入 XML 的(不带引号的)值。

例如

android:color="@{isValid ? @color/green : @color/red}"

或者,您可以导入具有所需静态字段的类,例如

<data>
    <import type="android.view.View"/>
</data>

还有

android:visibility="@{isVisible ? View.VISIBLE : View.GONE}"

这两者都显示在 data binding documentation

关于android - Android XML 布局中条件语句的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407664/

相关文章:

android - 处理大型 json 响应 - Android

java - android的设计问题

java - 通过套接字和流的 JAXB - 阅读器 block

xml - 为什么我应该使用 XmlType 而不是关系数据库?

android - 如何使用 ObservableField

android - 数据绑定(bind)失败, "couldn' 猜猜”

Android 2.2 联系人生日日期

java - Android注册 Activity 崩溃

android - 使用 include 后 ListView 不显示

android - 绑定(bind)适配器无效元素问题