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

Jetpack Compose LargeTopAppBar标题重复显示两次问题修复

问题原因

顶部出现两个标题栏的核心原因是应用主题默认开启了系统原生ActionBar:

  • 你在Scaffold中配置的LargeTopAppBar是Jetpack Compose实现的独立顶部栏组件
  • 你继承的MonetCompatActivity属于AppCompatActivity子类,会自动读取主题配置渲染原生ActionBar
    两个组件同时加载显示,就会出现顶部重复标题的问题,你贴出的Compose代码本身没有逻辑错误。

问题效果截图

修复方案

二选一即可,优先推荐第一种方案,符合Compose项目的标准配置规范。

方案1:修改主题关闭原生ActionBar(推荐)

找到项目res/values目录下对应的主题配置文件(通常为themes.xml),将应用主题的父类替换为不带ActionBar的Material3主题,同时配置关闭ActionBar的属性:

<style name="Theme.TVTime" parent="Theme.Material3.DayNight.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <!-- 其余原有主题属性保持不变即可 -->
</style>

修改后系统将不再自动渲染原生ActionBar,所有顶部栏逻辑完全由Compose组件接管,从根源上避免组件冲突。

方案2:代码中手动隐藏ActionBar

如果暂时不想修改主题配置,可以在Activity的onCreate生命周期中,setContent调用之前添加代码手动隐藏原生ActionBar:

@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : MonetCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 新增以下行隐藏系统原生ActionBar
        supportActionBar?.hide()

        lifecycleScope.launchWhenCreated {
            monet.awaitMonetReady()
            setContent {
                TVTimeTheme(monetCompat = monet) {
                    val decayAnimationSpec = rememberSplineBasedDecay<Float>()
                    val topAppBarScrollState = rememberTopAppBarScrollState()
                    val scrollBehavior = remember(decayAnimationSpec) {
                       TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
                          decayAnimationSpec, topAppBarScrollState
                       )
                    }

                    Scaffold (
                        topBar = {
                            LargeTopAppBar(
                                title = { Text(text = "movies") },
                                scrollBehavior = scrollBehavior
                            )
                        }
                   ) { innerPadding ->
                       Box(modifier = Modifier.padding(innerPadding))
                   }
               }
           }
       }
   }
}

修复完成后重新运行应用,顶部将仅显示你自定义的LargeTopAppBar,重复标题问题消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:42:14