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

Jetpack Compose:如何缩小Material3 TopAppBar的高度?

Material3 TopAppBar 适配 Material2 56dp 高度方案

Material3 的 SmallTopAppBar 默认高度为 64dp,比 Material2 的 56dp 更高。你之前尝试的 windowInsets 仅控制组件与系统栏的间距,无法改变自身高度;直接设置 modifier.height(56.dp) 会因内部默认垂直内边距导致内容错位。以下是两种可行解决办法:

方案一:调整官方组件的内容内边距

通过修改 contentPadding 消除内部垂直间距,配合固定高度让内容居中:

SmallTopAppBar(
    title = { Text("页面标题") },
    navigationIcon = {
        IconButton(onClick = { /* 返回逻辑 */ }) {
            Icon(Icons.Default.ArrowBack, contentDescription = "返回")
        }
    },
    actions = {
        IconButton(onClick = { /* 搜索逻辑 */ }) {
            Icon(Icons.Default.Search, contentDescription = "搜索")
        }
    },
    modifier = Modifier.height(56.dp),
    contentPadding = PaddingValues(horizontal = 16.dp, vertical = 0.dp),
    windowInsets = WindowInsets(0.dp)
)

方案二:完全自定义 TopAppBar 布局

如果官方组件的内部逻辑限制过多,直接用 Row 实现自定义布局,完全掌控高度和内容位置:

Row(
    modifier = Modifier
        .fillMaxWidth()
        .height(56.dp)
        .background(MaterialTheme.colorScheme.primary)
        .padding(horizontal = 16.dp),
    verticalAlignment = Alignment.CenterVertically,
    horizontalArrangement = Arrangement.SpaceBetween
) {
    // 左侧导航图标
    IconButton(onClick = { /* 返回逻辑 */ }) {
        Icon(
            Icons.Default.ArrowBack,
            contentDescription = "返回",
            tint = MaterialTheme.colorScheme.onPrimary
        )
    }
    // 标题文本
    Text(
        text = "页面标题",
        style = MaterialTheme.typography.titleLarge,
        color = MaterialTheme.colorScheme.onPrimary
    )
    // 右侧操作图标
    IconButton(onClick = { /* 搜索逻辑 */ }) {
        Icon(
            Icons.Default.Search,
            contentDescription = "搜索",
            tint = MaterialTheme.colorScheme.onPrimary
        )
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:14:58