Android устанавливает нижний лист в XML - PullRequest
0 голосов
/ 15 апреля 2019

Нижний лист в XML имеет несколько состояний: STATE_COLLAPSED, STATE_EXPANDED, STATE_HIDDEN и т. Д.

Как я могу установить набор в XML с помощью наблюдаемой?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottom_sheet_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:behavior_hideable="true"
    app:behavior_peekHeight="0dp"
    app:layout_behavior="@string/bottom_sheet_behavior"
    <!-- Example of State -->
    app:bottom_state="@{viewModel.state}"
    >
</LinearLayout>

Очевидно, нижнее состояние не является правильным названием, но я пытаюсь выяснить, что это такое.

1 Ответ

2 голосов
/ 15 апреля 2019

Прямые значения xml не доступны для нижних состояний листа. Но если вы хотите сделать это в привязке данных, есть другой вариант. Создайте для этого адаптер привязки и используйте его.

 @BindingAdapter("bottomSheetState")
    fun bindingBottomSheet(container: LinearLayout, state:Int) {
        val behavior=BottomSheetBehavior.from(container)
        behavior.state = state
    }

Теперь в XML вы можете использовать его

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="340dp"
            app:behavior_hideable="true"
            app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
            app:behavior_peekHeight="80dp"
            app:bottomSheetState="@{model.uiState.bottomSheetState}">
...