首页 > 解决方案 > 为什么我可以使用 android:background="@{!aHomeViewModel.isHaveRecord?#FFFFF:#F3F3F8}" 绑定数据?

问题描述

我在 Android Studio 的布局文件 XML 中使用 LiveData,代码 A 和代码运行良好。

但是Code C无法编译,我该如何解决?

错误信息

预期,得到'#'

代码 A

<androidx.recyclerview.widget.RecyclerView
      ...                
      android:visibility="@{aHomeViewModel.isHaveRecord? View.VISIBLE: View.GONE}"
   />

代码 B

  <androidx.recyclerview.widget.RecyclerView
      ...           
      android:background="#F3F3F8"     
   />

代码 C

  <androidx.recyclerview.widget.RecyclerView
      ...           
      android:background="@{!aHomeViewModel.isHaveRecord? #FFFFFF: #F3F3F8}"     
   />

标签: androidandroid-livedata

解决方案


颜色.xml

<resources>
    <color name="colorOne">#f3f3f8</color>
    <color name="colorTwo">#ffffff</color>
</resources>

然后在你的 xml 布局中

android:background="@{!aHomeViewModel.isHaveRecord ? @color/colorOne : @color/colorTwo }">

推荐阅读