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

如何禁止BottomSheetScaffold被滑动拖拽?仅通过按钮关闭

解决BottomSheetScaffold禁止滑动关闭底部弹窗的问题

你用错属性了,drawerGesturesEnabled是控制侧边抽屉的滑动手势,和底部弹窗完全无关。要禁用底部弹窗的滑动关闭行为,得用sheetGesturesEnabled属性,把它设为false即可。

示例代码

val sheetState = rememberBottomSheetState(skipPartiallyExpanded = true)
val coroutineScope = rememberCoroutineScope()

BottomSheetScaffold(
    sheetContent = {
        Column(
            modifier = Modifier.fillMaxWidth().padding(16.dp),
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text("底部弹窗内容")
            Button(
                onClick = {
                    coroutineScope.launch {
                        sheetState.collapse()
                    }
                }
            ) {
                Text("关闭弹窗")
            }
        }
    },
    sheetState = sheetState,
    sheetGesturesEnabled = false, // 关键:禁用滑动关闭
    scaffoldState = rememberBottomSheetScaffoldState()
) {
    Button(
        onClick = {
            coroutineScope.launch {
                sheetState.expand()
            }
        }
    ) {
        Text("打开底部弹窗")
    }
}

通过sheetState配合协程可以精准控制弹窗的展开与收起,设置sheetGesturesEnabled = false后,用户只能通过点击弹窗上的按钮关闭它,滑动操作会完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:35:32