Привязка с ошибкой: несовместимо с атрибутом Android: видимость - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь установить visibility и src для ImageView, используя привязку данных. Я не знаю, почему эта ошибка появляется, и я искренне верю, что это работало в какой-то момент, но я могу ошибаться.

Компоновка:

<data>
    <import type="android.view.View" />
    <import type="android.support.v4.content.ContextCompat" />
    <variable
        name="viewData"
        type="com.myapp.SomethingViewData" />
</data>
    ...
        <ImageView
            ...
            android:src="@{ContextCompat.getDrawable(context, viewData.getIconResource())}"
            android:visibility="@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}" />

Класс данных

@Parcelize
data class SomethingViewData(val iconResource: Int,
                             val iconVisibility: Boolean) : Parcelable

Сообщение об ошибке:

error: '@{ContextCompat.getDrawable(context, viewData.getIconResource())}' is incompatible with attribute android:src (attr) reference|color.   
error: '@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}' is incompatible with attribute android:visibility (attr) enum [gone=2, invisible=1, visible=0]. 

Что это значит и как мне это исправить?

Ответы [ 4 ]

0 голосов
/ 05 июля 2019

В моем случае отсутствие закрывающей скобки вызвало появление этой ошибки для меня - у меня было:

android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE"

вместо:

android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE}"
0 голосов
/ 08 ноября 2018

Попробуйте использовать одинарные кавычки в src и visibility

android:src='@{ContextCompat.getDrawable(context, viewData.getIconResource())}'
android:visibility='@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}'
0 голосов
/ 09 ноября 2018

Ух ты, так или иначе, dataBinding { enabled = true } было удалено из файла build.gradle модулей моего приложения. Добавляем обратно и все работает как раньше.

0 голосов
/ 08 ноября 2018

Ваша функция "getIconVisibility" возвращает целое число, но android:visibility (в вашем XML-файле) требуется значение перечисления: Visibility.Gone | Visibility.Visible | Visibility.Invisible

...