val bottomSheetBehavior = BottomSheetBehavior.from(binding.rootBottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
bottomSheetBehavior.skipCollapsed = true
bottomSheetBehavior.peekHeight = 0
bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
var tempSlideOffsetRatio = 0f
override fun onStateChanged(bottomSheet: View, newState: Int) {
if (newState != BottomSheetBehavior.STATE_DRAGGING) {
if (tempSlideOffsetRatio < 0.5) {
finish()
} else {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
} else if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
finish()
}
}
override fun onSlide(bottomSheet: View, slideOffset: Float) {
tempSlideOffsetRatio = slideOffset
}
})
本人页面是一个普通的activity 使用了 BottomSheetBehavior 变相实现了 BottomSheetBehaviorDialog 功能,依照大厂App交互,跳过折叠交互,滑动超过当前wrap_content内容的距离一半时,关闭页面,否则重新弹开页面。

本文介绍如何在普通Activity中利用BottomSheetBehavior模拟BottomSheetBehaviorDialog功能,通过设置skipCollapsed属性跳过折叠状态,当滑动超过内容高度一半时关闭页面,否则保持展开状态,提供了一种增强用户体验的交互方式。

4460

被折叠的 条评论
为什么被折叠?



