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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:02:39