android - 如何更改 BottomSheetDialog 的 Dismiss Behavior 的敏感性
问题描述
我有一个BottomSheetDialogFragment
. 但即使是最轻微的向下滑动也会关闭对话框。我不想让它静态并删除向下滑动以消除行为。我希望能够更改灵敏度,如果x
向下滑动像素,则关闭
解决方案
利用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
}
})
推荐阅读
- r - 如何一次运行多个外循环?
- python - Python - 如何按索引替换列表中的字符 - 遗传算法
- r - 我写的 R 函数没有改变列值
- development-environment - 如何设置环境以在 Django 项目中编写/测试 Clarity 智能合约
- tensorflow - 尺寸必须相等,但为 25 和 50。输入形状:[5,25]、[5,50]
- discord.py - Bot 命令查看参数是否为 int
- typescript - 如何在 typescript eslint 配置中启用标准命名约定的警告?
- flutter - 在 Flutter 中为对角滚动的背景设置动画
- c# - 当在 VM 构造函数中给定属性值时,文本框的 WPF 数据绑定未显示在设计器中
- authentication - Laravel Sanctum,由于现有用户表而无法迁移 php artisan