Проблема с троичным условным в xml с привязкой данных - PullRequest
0 голосов
/ 17 октября 2019

У меня есть 2 ситуации вокруг этой кнопки с некоторыми параметрами, устанавливаемыми привязкой данных, и я обнаружил, что проблема заключается в троичной операции с порядком истинных и ложных результатов.

<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 находится во второй позиции троичной операции, он не будет работать, но пока он находится в первой позиции троичной операции, он будет работать. Может кто-нибудь объяснить мне, почему я не собираюсь?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Не могли бы вы просто попробовать, как это

@{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" />
1 голос
/ 17 октября 2019

Что такое тип данных "manager.backButtonColor"? Я думаю, что вы используете 2 разных типа данных для привязки.

...