- 确认 bottom sheet 是否被正确地关闭,可以通过给 BottomSheetBehavior 设置 StateCallback 监听状态变化来检查。
bottomSheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onStateChanged(bottomSheet: View, newState: Int) {
if (newState == BottomSheetBehavior.STATE_HIDDEN) {
// do something
}
}
override fun onSlide(bottomSheet: View, slideOffset: Float) {}
})
- 如果 bottom sheet 还未完全隐藏,可以通过设置 View 的 visibility 为
View.GONE
或者对 bottom sheet 执行动画将其移出屏幕。
// 设置 visibility
bottomSheet.visibility = View.GONE
// 执行动画
ObjectAnimator.ofFloat(bottomSheet, "translationY", 0f, bottomSheet.height.toFloat()).apply {
duration = 300L
interpolator = AccelerateInterpolator()
addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
bottomSheet.visibility = View.GONE
}
})
start()
}