Прилипание к вершине экрана (Фиксирование view на вершину NestedScrollView) | Kotlin

Как сделать так, чтобы при пролистывании вниз, container_2 прилипал к вершине экрана, как показано на картинке 2? А на картинке 3 то, как получается сейчас.

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения


Ответы (1 шт):

Автор решения: Sire IMPACTUS

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

Способ 1

Переделал верстку:

— CoordinatorLayout
— — ConstraintLayout (container_1)
— — ConstraintLayout (container_2)

И добавил код в onActivityCreated:

bottomSheet = BottomSheetBehavior.from<ConstraintLayout>(container)
bottomSheet.state = BottomSheetBehavior.STATE_COLLAPSED
bottomSheet.peekHeight = 865 //(y из свойств) + ~(100-200). 
Видимо, это значение отталкивается от низа экрана, а не верха
bottomSheet.isHideable = false

Способ 2 (У меня не получилось, но, теоретически, должно работать)

Используйте setOnScrollChangeListener на NestedScrollView. Там можно получить значение scrollY. Его надо сравнить с высшей точкой нужного элемента (view.getTop | view.top), а после этого заблокировать скролл.

→ Ссылка