Jetpack Compose(Material3)中BottomSheetScaffold的show/expand等方法区别解惑
Jetpack Compose Material3 BottomSheetScaffold 状态方法差异解析
核心状态与对应方法说明
BottomSheetScaffold的底部面板核心状态分为Hidden(隐藏)、PartiallyExpanded(部分展开)、Expanded(完全展开),以下是各方法的明确差异:
hide()
强制将面板切换到Hidden状态,面板完全隐藏,不再占据屏幕可见空间,仅保留后台状态。show()
将面板从Hidden状态恢复到最近一次的非隐藏状态:- 如果之前面板处于
PartiallyExpanded,调用后回到部分展开状态; - 如果之前处于
Expanded,调用后回到完全展开状态; - 首次从
Hidden调用时,默认进入PartiallyExpanded(除非初始化BottomSheetState时指定initialValue = BottomSheetValue.Expanded)。
- 如果之前面板处于
expand()
强制将面板切换到Expanded状态,无视当前的非隐藏状态(若面板正在拖拽,会等待拖拽结束后执行)。展开高度默认占满屏幕除顶部栏外的空间,可通过BottomSheetScaffold的expandedHeight参数自定义。partiallyExpand()
强制将面板切换到PartiallyExpanded状态,无视当前的非隐藏状态(拖拽中同样会等待结束)。展开高度默认约为屏幕高度的一半,可通过partiallyExpandedHeight参数自定义。
代码示例
// 初始化底部面板状态,默认初始为隐藏 val bottomSheetState = rememberBottomSheetState(initialValue = BottomSheetValue.Hidden) // 隐藏面板 LaunchedEffect(hideButtonClick) { bottomSheetState.hide() } // 显示面板(恢复上次状态/首次进入部分展开) LaunchedEffect(showButtonClick) { bottomSheetState.show() } // 强制完全展开 LaunchedEffect(expandButtonClick) { bottomSheetState.expand() } // 强制部分展开 LaunchedEffect(partialButtonClick) { bottomSheetState.partiallyExpand() }
关键差异总结
| 方法 | 行为逻辑核心 | 适用场景 |
|---|---|---|
hide() | 强制隐藏面板 | 用户主动关闭面板时使用 |
show() | 恢复上一次显示状态/默认部分展开 | 触发面板显示但无需指定状态时 |
expand() | 强制完全展开 | 需要直接展示完整面板内容时 |
partiallyExpand() | 强制部分展开 | 仅需展示面板预览内容时 |
内容的提问来源于stack exchange,提问作者Santhosh Kumar
相关产品推荐
相关产品推荐

