布局表达式-可绘制值的三元运算

时间:2019-05-16 02:23:04

标签: android android-layout

vm具有一个isWin值,该值只能具有01

为此,我想利用Data Binding

我访问vm中的<data>,并且我这样连接:

@{vm.isWin == 1 ? @drawable/win_true : @drawable/win_false}

但是,这似乎不起作用。

我得到红色底线:

'!=', '%', '==', '(', ..., '>=', '>>' or '>>>' expected, got ':'

This由Google引用。

完整的activity_main.xml是这样的:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="vm"
            type="io.monolabs.asscnfc.vm.ResultViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src = "@{vm.isWin == 1 ? @drawable/win_true : @drawable/win_false}"/>
    </LinearLayout>
</layout>

1 个答案:

答案 0 :(得分:2)

我也遇到过这个问题。通过从变量名称中删除'is'关键字来解决。javabeans尝试生成相同名称的getter和setter。因为“ is”仅在方法名称之前出现。