首页 > 解决方案 > 如何更改 BottomSheetDialog 的 Dismiss Behavior 的敏感性

问题描述

我有一个BottomSheetDialogFragment. 但即使是最轻微的向下滑动也会关闭对话框。我不想让它静态并删除向下滑动以消除行为。我希望能够更改灵敏度,如果x向下滑动像素,则关闭

标签: androidandroid-studiokotlin

解决方案


利用BottomSheetBehavior

这将获得您的 BottomSheetDialogFragment 视图的行为


var mBehavior: BottomSheetBehavior<*> = BottomSheetBehavior.from([your view reference])

然后你可以像这样设置

val dismissOffset: Float = [-1..0] // 0 is the starting position. -1 is hidden. -0.5 is middle

var offset: Float? = null

mBehavior.setBottomSheetCallback(object : BottomSheetCallback() {
            override fun onStateChanged(bottomSheet: View, newState: Int) {
                if (newState == BottomSheetBehavior.STATE_SETTLING) {
                    if (offset!! > dismissOffset) {
                        mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED)
                    } else {
                        mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN)
                    }
                }
            }

            override fun onSlide(bottomSheet: View, slideOffset: Float) {
                offset = slideOffset
            }
        })

推荐阅读