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

求助:Android Jetpack Compose Material3中获取BottomSheet进度失败

Compose Material3中获取BottomSheet滑动进度的解决方法

在Compose Material2(如androidx.compose.material:material:1.4.3)中,可通过rememberBottomSheetScaffoldState().bottomSheetState.progress直接获取BottomSheet滑动进度,但Material3(如androidx.compose.material3:material3:1.2.0-alpha03)移除了该属性,需通过以下方式解决:

核心实现方案

Material3的BottomSheetState提供了calculateProgress方法,用于计算两个状态间的滑动进度,具体步骤如下:

  1. 获取BottomSheetState实例
val bottomSheetState = rememberBottomSheetState(skipHiddenState = false)
val scaffoldState = rememberBottomSheetScaffoldState(bottomSheetState = bottomSheetState)
  1. 计算滑动进度
    指定起始状态(from)和目标状态(to),调用方法获取0f-1f区间的进度值:
val progress = bottomSheetState.calculateProgress(
    from = BottomSheetValue.Collapsed,
    to = BottomSheetValue.Expanded
)
  1. 实时监听进度变化
    结合snapshotFlow和collect实现进度的实时监听:
LaunchedEffect(bottomSheetState) {
    snapshotFlow {
        bottomSheetState.calculateProgress(
            from = BottomSheetValue.Collapsed,
            to = BottomSheetValue.Expanded
        )
    }.collect { currentProgress ->
        // 在此处理进度变化逻辑,比如更新关联UI状态
    }
}

补充说明

  • calculateProgress返回值范围为0f(对应from状态)到1f(对应to状态)
  • 若BottomSheet包含HalfExpanded等中间状态,可调整from和to参数计算对应区间的进度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:55:01