Дополнение BottomSheetBehavior

У меня такой макет фрагмента.

<android.support.design.widget.CoordinatorLayout 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"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "@color/colorBackgroundBlack">

    <MyCustomView
        android:id = "@+id/vBottomSlider"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:layout_behavior = "android.support.design.widget.BottomSheetBehavior" />

</android.support.design.widget.CoordinatorLayout>

Для моего vBottomSlider я создаю экземпляр BottomSheetBehavior:

val bh = BottomSheetBehavior.from(vBottomSlider)
bh.isHideable = false
bh.peekHeight = 50.dpToPx
bh.setBottomSheetCallback(mBottomCallback)

Это все внутри фрагмента.

Мой основной макет активности выглядит так:

<android.support.constraint.ConstraintLayout
        android:id = "@+id/vMainConstraint"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent">

     <FrameLayout
            android:id = "@+id/fContent"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent" />

     <com.aurelhubert.ahbottomnavigation.AHBottomNavigation
            android:id = "@+id/vNavigation"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            app:layout_constraintBottom_toBottomOf = "parent" />

</android.support.constraint.ConstraintLayout>

Для моего fContent я установил нижний padding как высоту vNavigation. Когда я прокручиваю свой vBottomSlider, я скрываю vNavigation, изменяя его translationY, и устанавливаю padding для своего fContent (принимая событие onSlide от BottomSheetBehavior.BottomSheetCallback).

Скольжение пальцем полностью, работает нормально. Но когда я использую fling или программно устанавливаю состояние EXPANDED или COLLAPSED для моего экземпляра BottomSheetBehavior, он не прокручивается полностью. Здесь всегда есть место (кажется, высота моего vNavigation).

0
0
709
1

Ответы 1

Мне удалось решить эту проблему, отредактировав исходный код BottomSheetBehavior. Мое решение немного хакерское. Отправьте электронное письмо, если вам нужен отредактированный класс.

разместить решение здесь, не нужно просить отправить письмо :)

Tim 23.04.2019 17:12

@ Тим, он слишком большой

TooLazy 24.04.2019 10:20

Другие вопросы по теме