Android: видимость Не работает с видимыми или пропавшими опциями - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь показать и скрыть элемент, основанный на логическом значении.В моем XML есть следующее:

android:visibility="@{viewModel.interfaceEnable ? visible : gone}"

viewModel.interfaceEnable - это ObservableField как таковое: var interfaceEnable = ObservableField<Boolean>()visible и gone являются значениями для атрибута android:visibility.Но я получаю эту ошибку:

****/ data binding error ****msg:Identifiers must have user defined types from the XML file. visibile is missing it

Почему этот метод не устанавливается этим методом?

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

Вы должны использовать View следующим образом, чтобы использовать константы:

android:visibility="@{viewModel.interfaceEnable ? View.VISIBLE : View.GONE}"

Для получения дополнительной информации ознакомьтесь с Документацией о видимости , которую вы можете использовать View.GONE, View.INVISIBLE и View.VISIBLE

Также убедитесь, что вы используете правильный тип импорта для этого следующим образом

<data>
    <import type="android.view.View" />
    <variable
        name="anyName"
        type="com.example.AnyName"/>
</data>
1 голос
/ 09 апреля 2019

видимый и ушедший остаются константами в View (View.VISIBLE и View.GONE), и это утверждение должно отражать его

android:visibility="@{viewModel.interfaceEnable ? View.VISIBLE : View.GONE}"

в качестве альтернативы вы можете использовать для этого простой адаптер для крепления. EG

 @BindingAdapter("toVisibility")
 fun View.toVisibility(visible: Boolean) {
    visibility = if (visible) { View.VISIBLE } else { View.GONE }
 }

и в вашем xml используйте

toVisibility="@{viewModel.interfaceEnable}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...