You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止点击返回键时BottomSheetBehaviour自动消失?

BottomSheetBehavior禁止点击返回键自动关闭解决方案

触发原因

BottomSheetBehavior默认绑定了CoordinatorLayout的返回事件分发逻辑,当BottomSheet处于展开状态时,返回键事件会被系统消费,自动将BottomSheet切换到隐藏(STATE_HIDDEN)状态,对应视图变为GONE。

解决方案

方案1:禁用完全隐藏特性(无需拦截返回事件)

如果你的需求是仅禁止BottomSheet变为GONE,允许点击返回键折叠到指定的折叠高度,可以直接设置不可隐藏属性:

  • XML布局中添加属性:app:behavior_hideable="false"
  • 代码动态设置:
    • Java写法:bottomSheetBehavior.setHideable(false);
    • Kotlin写法:bottomSheetBehavior.isHideable = false

该属性设置为false后,BottomSheet无法进入STATE_HIDDEN状态,点击返回键只会折叠到STATE_COLLAPSED状态,不会变为GONE。

方案2:拦截返回键事件(完全禁止返回键操作BottomSheet)

如果需要完全屏蔽返回键对BottomSheet的控制,可以重写所属Activity的onBackPressed方法,拦截对应逻辑:

Java示例

@Override
public void onBackPressed() {
    if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED
        || bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
        // 此处可添加自定义逻辑,无额外需求留空即可阻止默认关闭行为
        return;
    }
    super.onBackPressed();
}

Kotlin示例

override fun onBackPressed() {
    if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_EXPANDED
        || bottomSheetBehavior.state == BottomSheetBehavior.STATE_COLLAPSED) {
        // 自定义逻辑留空即可
        return
    }
    super.onBackPressed()
}

内容的提问来源于stack exchange,提问作者KODE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:09:01