Нижний лист в 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>
Очевидно, что нижнее состояние не соответствует названию, но я пытаюсь понять, что это такое.
Прямые значения xml недоступны для состояний нижнего листа. Но если вы хотите сделать это в привязке данных, есть еще один вариант. Создайте для этого адаптер привязки и используйте его.
@BindingAdapter("bottomSheetState")
fun bindingBottomSheet(container: LinearLayout, state:Int) {
val behavior=BottomSheetBehavior.from(container)
behavior.state = state
}
Теперь в xml вы можете использовать его
<LinearLayout
android:layout_height = "340dp"
android:layout_width = "match_parent"
app:behavior_hideable = "true"
app:behavior_peekHeight = "80dp"
app:bottomSheetState = "@{model.uiState.bottomSheetState}"
app:layout_behavior = "com.google.android.material.bottomsheet.BottomSheetBehavior">