首页 > 解决方案 > 带有数据绑定的xml中的三元条件问题

问题描述

我在这个按钮周围有以下两种情况,其中一些参数是由数据绑定设置的,我发现问题是关于具有真假结果顺序的三元运算。

<Button
    android:id="@+id/tbIbArrowBack"
    android:layout_width="@dimen/extra_large_size_32"
    android:layout_height="@dimen/extra_large_size_32"
    android:layout_marginStart="@dimen/activity_default_medium_margin"
    android:background="@drawable/ic_arrow_back_white_24dp"
    android:onClick="@{() -> manager.onClick()}"
    android:visibility="@{manager.showBackButton ? View.VISIBLE : View.GONE,  default=gone}"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:visibility="visible" />
  1. 此代码不会编译:android:background="@{manager.backButtonColor == 0 ? manager.backButtonColor: @drawable/ic_arrow_back_white_24dp,default=@drawable/ic_arrow_back_white_24dp}
  2. 这段代码编译:android:background="@{manager.backButtonColor != 0 ? @drawable/ic_arrow_back_white_24dp : manager.backButtonColor, default=@drawable/ic_arrow_back_white_24dp}"

第 1 项和第 2 项是我尝试制作可自定义背景的方式。当@drawable/ic_arrow_back_white_24dp处于三元运算的第二位置时它不会工作,但是当它处于三元运算的第一位置时它会起作用。有人可以向我解释为什么 1 不会编译吗?

标签: androidandroid-xmlandroid-databinding

解决方案


“manager.backButtonColor”的数据类型是什么?我认为您正在使用 2 种不同的数据类型进行绑定。


推荐阅读