簡體   English   中英

xml 中的三元條件問題與數據綁定

[英]Problem with ternary conditional in xml with data-binding

我在這個按鈕周圍有以下兩種情況,其中一些參數是通過數據綁定設置的,我發現問題是關於具有真假結果順序的三元運算。

<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在三元運算的第二個 position 中它不起作用,但是當它在三元運算的第一個 position 中時它起作用。 有人可以向我解釋為什么 1 不會編譯嗎?

“manager.backButtonColor”的數據類型是什么? 我認為您正在使用 2 種不同的數據類型進行綁定。

你能像這樣試試嗎

@{data.isSelectMessage ? @drawable/ic_menu_message_selected : @drawable/ic_menu_message_deselected}

因為它非常適合我,我就這樣使用它。

<ImageView
       android:id="@+id/img_menu_message"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:alpha="@{alpha}"
       android:background="@color/white"
       android:src="@{data.isSelectMessage ? @drawable/ic_menu_message_selected : @drawable/ic_menu_message_deselected}"
       tools:src="@drawable/ic_menu_message_selected" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM