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

如何阻止Jetpack Compose中Modal Bottom Sheet下滑关闭

仅允许点击图标关闭Modal Bottom Sheet的解决方案

要禁用Modal Bottom Sheet的下滑关闭行为,只保留关闭图标触发关闭,只需做以下两处修改:

1. 禁用拖拽关闭功能

在rememberModalBottomSheetState中添加isDraggable = false,直接取消面板的拖拽交互:

val previewSheetState = rememberModalBottomSheetState(
    skipPartiallyExpanded = false,
    isDraggable = false // 禁止拖拽下滑关闭
)

2. 可选:限制仅图标触发关闭(禁用外部点击关闭)

如果需要完全只通过关闭图标关闭面板,把onDismissRequest里的逻辑注释掉或清空,避免点击面板外部触发关闭:

onDismissRequest = { 
    // 移除原有回调,禁止外部点击关闭
    // onBottomSheetDismiss(false) 
},

另外注意修正LazyColumn的列表项显示逻辑,原代码里固定显示"it",应该改为显示列表的实际元素:

LazyColumn {
    items(list) { item ->
        Text(text = item)
    }
}

修改后的完整代码

fun Preview(
    list: List<String>,
    onBottomSheetDismiss: (Boolean) -> Unit,
) {
    val scope = rememberCoroutineScope()
    val previewSheetState = rememberModalBottomSheetState(
        skipPartiallyExpanded = false,
        isDraggable = false
    )
    ModalBottomSheet(
        onDismissRequest = { 
            // 若允许外部点击关闭,取消注释下面一行
            // onBottomSheetDismiss(false) 
        },
        sheetState = previewSheetState,
        modifier = Modifier.height(700.dp),
        dragHandle = {
            Column {
                Row(
                    Modifier
                        .fillMaxWidth()
                        .background(Color.White)
                        .padding(start = 15.dp, top = 10.dp, bottom = 5.dp, end = 10.dp),
                    Arrangement.SpaceBetween,
                    Alignment.CenterVertically
                ) {
                    Text(text = "Preview")
                    CloseIcon(onClick = {
                        scope.launch {
                            previewSheetState.hide()
                            onBottomSheetDismiss(false)
                        }
                    })
                }
                HorizontalDivider(thickness = 1.dp)
            }
        }
    ) {
        LazyColumn {
            items(list) { item ->
                Text(text = item)
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:50:12