android - 如何更改 BottomSheetDialog 的关闭行为的敏感度

标签 android android-studio kotlin

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

最佳答案

使用BottomSheetBehavior

这将获取您的 BottomSheetDialogFragment View 的行为


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
            }
        })

关于android - 如何更改 BottomSheetDialog 的关闭行为的敏感度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61592033/

相关文章:

Android TabLayout ViewPager 没有在 backstack 上膨胀选项卡 fragment

java - Android 10 设备不开始发现 wifi direct

android - 启动画面错误 : android. content.res.Resources$NotFoundException: Drawable

java - Android 绑定(bind)服务问题

java - 如果用户在 Edittext 中键入无效数据,如何使 AlertDialog 框保持打开状态?

android - 生成总计的多个按钮

android - 记录 Android 应用程序第三方分析库的 http 流量网络

postgresql - 如何通过 Kotlin Exposed ORM 使用 Postgresql 枚举类型?

android - Mockito 想要但未调用 - 但是,与此模拟正好有 1 次交互

java - 屏幕关闭时继续播放音乐