通过数据绑定(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/