为什么我可以使用 android:background="@{!aHomeViewModel.isHaveRecord?#FFFFF: #F3F3F8}" 绑定数据?
Why can I binding data using android:background="@{!aHomeViewModel.isHaveRecord? #FFFFF: #F3F3F8}"?
我在 Android Studio 中的布局文件 XML 中使用 LiveData,代码 A 和代码运行良好。
但是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}"
/>
我认为 not
/ !
在 data binding expression 是不合逻辑的
也许您可以将 return 值换成背景?
<androidx.recyclerview.widget.RecyclerView
...
android:background="@{aHomeViewModel.isHaveRecord ? #F3F3F8: #FFFFFF}"
/>
colors.xml
<resources>
<color name="colorOne">#f3f3f8</color>
<color name="colorTwo">#ffffff</color>
</resources>
然后在您的 xml 布局中
android:background="@{!aHomeViewModel.isHaveRecord ? @color/colorOne : @color/colorTwo }">
数据绑定无法处理硬编码 hex-values。
您最好的选择是使用:
android:background="@{aHomeViewModel.isHaveRecord ? @color/record : @color/noRecord}"
或者您可以尝试使用整数颜色值。它可能采用整数值。如果没有,上面的行是您唯一的选择。
// (FFFFFF)16 = (16777215)10
// (F3F3F8)16 = (15987704)10
android:background="@{aHomeViewModel.isHaveRecord ? 16777215 : 15987704}"
(https://www.binaryhexconverter.com/hex-to-decimal-converter)
我在 Android Studio 中的布局文件 XML 中使用 LiveData,代码 A 和代码运行良好。
但是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}"
/>
我认为 not
/ !
在 data binding expression 是不合逻辑的
也许您可以将 return 值换成背景?
<androidx.recyclerview.widget.RecyclerView
...
android:background="@{aHomeViewModel.isHaveRecord ? #F3F3F8: #FFFFFF}"
/>
colors.xml
<resources>
<color name="colorOne">#f3f3f8</color>
<color name="colorTwo">#ffffff</color>
</resources>
然后在您的 xml 布局中
android:background="@{!aHomeViewModel.isHaveRecord ? @color/colorOne : @color/colorTwo }">
数据绑定无法处理硬编码 hex-values。
您最好的选择是使用:
android:background="@{aHomeViewModel.isHaveRecord ? @color/record : @color/noRecord}"
或者您可以尝试使用整数颜色值。它可能采用整数值。如果没有,上面的行是您唯一的选择。
// (FFFFFF)16 = (16777215)10
// (F3F3F8)16 = (15987704)10
android:background="@{aHomeViewModel.isHaveRecord ? 16777215 : 15987704}"
(https://www.binaryhexconverter.com/hex-to-decimal-converter)