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

Compose实现带固定按钮的CollapsingToolbar的需求与问题

在Jetpack Compose中实现自定义CollapsingToolbar

我尝试在Compose中实现CollapsingToolbar,但网上找到的示例都无法满足需求。此前我使用XML实现的布局结构如下:

- AppBarLayout
  - CollapsingToolbarLayout
    - ConstraintLayout
      - ImageView(带视差效果、centerCrop)
      - Toolbar
- NestedScrollView
- FloatingButton (anchorGravity="bottom|end")
- Button(吸底固定)

我进行了多种尝试,但核心难点在于添加FloatingButton(也可以是其他普通视图,非特指FAB)。

我已实现视差效果,代码如下:

Box(
   modifier = Modifier.graphicsLayer { 
        translationY = -scroll.value.toFloat() / 2f
        alpha = (-1f / headerHeightPx) * scroll.value + 1
   }
) { Image(...) }

我找到了一个Compose Collapsing Toolbar第三方库,但尽量不想使用第三方依赖。我了解到Material3中有TopAppBar,原本以为可以适用。

更新

我也尝试了Material3的TopAppBar,但未达到预期效果,因为我的需求逻辑与它的默认行为冲突。

我的思路是创建一个Box或带阴影的Surface,在其中包含Icon、Image和中间的Box,我还绘制了示意图来描述该思路。需要将列表的滚动状态与Image的透明度动画或视差效果关联,当Toolbar折叠后,为Surface添加阴影。

总结需求

  • 创建自定义Composable,模拟TopAppBar的折叠行为,当高度达到TopAppBar最小高度56.dp时停止折叠;
  • 滚动时Image执行透明度或视差动画,背景平滑过渡为白色;
  • 需要实现类似exitUntilCollapsed的逻辑,比如当列表第一项可见时自动展开Toolbar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:57:28