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

Compose中如何禁用TopAppBar的折叠行为?

解决Jetpack Compose中TopAppBar随LazyColumn滚动到底部折叠的问题

你遇到的问题根源在于enterAlwaysScrollBehavior的设计逻辑——它本身就是用来实现TopAppBar随内容滚动自动折叠/展开的效果。要让TopAppBar全程保持固定高度且可见,有两种直接的解决方法:

方法1:移除滚动行为参数

如果不需要TopAppBar和内容之间的滚动交互,直接去掉scrollBehavior参数即可,TopAppBar默认就是固定状态:

TopAppBar(
    title = {
        Text(
            text = "Home",
            color = MaterialTheme.colorScheme.primary,
            fontSize = 18.sp
        )
    }
)

方法2:禁用滚动行为的响应

如果因需求必须保留scrollBehavior(比如需要监听TopAppBar状态),可以修改enterAlwaysScrollBehavior的canScroll参数,让它始终返回false,阻止TopAppBar响应滚动事件:

val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(
    canScroll = { false } // 禁止TopAppBar处理滚动事件
)

TopAppBar(
    scrollBehavior = scrollBehavior,
    title = {
        Text(
            text = "Home",
            color = MaterialTheme.colorScheme.primary,
            fontSize = 18.sp
        )
    }
)

原理说明

根据官方文档,canScroll回调用于判断当前滚动事件是否需要由EnterAlwaysScrollBehavior处理。当返回false时,TopAppBar会忽略所有滚动触发的折叠逻辑,保持固定高度和可见状态,完全不受LazyColumn滚动(包括滚动到底部)的影响。

内容的提问来源于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.18 06:22:18