Связывание данных Android: установить видимость по умолчанию в xml - PullRequest
0 голосов
/ 11 мая 2018

Я показываю элементы в программе просмотра и использую привязку данных .В XML-макете у меня есть такое представление:

 <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>

Это работает хорошо, но у меня есть одна проблема: при инициализации и привязке элементов к представлениям реселлера этот макет мигает один раз на экране, хотя начальное значение viewmodel.expandable равно false.Итак, я решил временно скрыть этот макет и попытался использовать default -параметр в xml следующим образом:

        <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>

Но что-то пошло не так:

error: 'View' is incompatible with attribute android:visibility (attr) enum [gone=2, invisible=1, visible=0].

Итак,или я неправильно использую этот параметр, или Google удалил это ключевое слово из правил привязки данных xml (я видел пример использования default - ключевое слово в xml на разработчиках Google раньше, но теперь я не смог)

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Проверьте, импортировали ли вы уже класс View.

<data>
    <import type="android.view.View"/>
    <variable ..... />
</data>

Кроме того, правильный синтаксис по умолчанию для значения по умолчанию для видимости: default=gone, нет default=View.GONE

0 голосов
/ 11 мая 2018

Вы можете установить gone, visible, invisible в default свойство.Заменить на ниже.

<include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=gone}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>
...