У меня есть представление, которое использует DataBinding
для отображения данных из ViewModel
. Вид имеет кнопку, которая скрыта, когда вид находится в ландшафтном режиме. На данный момент это работает, имея два файла макета, но я хотел бы иметь только один, так как это страшный сон для рефакторинга. Но как это сделать, используя DataBinding
и BindingAdapters
?
Как включить следующее выражение привязки для данного представления?
android:visibility="@{isLandscapeMode ? View.INVISIBLE : View.VISIBLE}"
EDIT:
Определение свойства моего расширения (ViewUtils.kt
):
val View.isLandscapeMode: Boolean
get() = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
И мой макет:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View"/>
<import type="com.example.base.views.ViewUtilsKt" />
<variable
name="isLandscapeMode "
type="java.lang.Boolean"/>
<variable
name="viewmodel"
type="com.example.ui.task.TaskViewModel" />
</data>
...
<ImageButton
...
android:visibility="@{isLandscapeMode ? View.INVISIBLE : View.VISIBLE}"
...
/>
Это вызывает ошибку компиляции: Cause: not a valid name: isLandscapeMode