BottomSheet行为填充

时间:2019-01-18 13:58:54

标签: android kotlin material-design bottom-sheet

我有这样的片段布局。

<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或设置COLLAPSEDBottomSheetBehavior状态时,它不会完全滚动。总是有一些空间(似乎是我的vNavigation的高度)。

1 个答案:

答案 0 :(得分:-1)

我设法通过编辑BottomSheetBehavior的来源来解决此问题。 我的解决方案有点小巧。如果需要修改班级,请发送电子邮件。