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

Android深色/浅色模式切换异常:开启深色模式时Toolbar显示应用名称问题排查

解决深色模式下Toolbar显示应用名称的问题

我帮你梳理了代码里的问题点,咱们一步步来搞定这个异常:

1. 统一深色/浅色主题的命名

你当前的浅色主题叫Theme.Light,但night文件夹里的深色主题叫Theme.Dark——这会让AppCompat在切换深色模式时找不到对应名称的主题,从而 fallback 到默认的AppCompat主题(默认主题自带ActionBar,所以会显示应用名称)。

修改方法:

  • 修改themes.xml(默认文件夹)里的主题名称,和night文件夹保持一致,比如统一叫Theme.MyApplication:
    <style name="Theme.MyApplication" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- 你的浅色主题属性... -->
    </style>
    
  • 同步修改themes.xml/night里的深色主题名称:
    <style name="Theme.MyApplication" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- 你的深色主题属性... -->
    </style>
    
  • 最后在AndroidManifest.xml里把应用默认主题设为这个统一名称:
    <application
        ...
        android:theme="@style/Theme.MyApplication">
        ...
    </application>
    

2. 切换主题后重启Activity生效

你当前的代码只设置了夜间模式,但没有触发Activity重建,这会导致主题切换不彻底,UI状态(比如Toolbar)出现异常。

修改SettingsFragment的代码,在设置完模式后重启Activity:

themePreference.setOnPreferenceChangeListener((preference, newValue) -> {
    if(newValue.equals("light_mode"))
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    if(newValue.equals("dark_mode"))
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    if(newValue.equals("system_default"))
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
    
    // 重启Activity让主题完全生效
    if(getActivity() != null) {
        getActivity().recreate();
    }
    return true;
});

3. 确保自定义Toolbar隐藏标题

因为你用的是NoActionBar主题,应该是自定义了Toolbar,可在布局或代码里明确隐藏标题:

  • 布局文件中给Toolbar添加属性:
    <androidx.appcompat.widget.Toolbar
        ...
        app:title=""
        app:titleEnabled="false"/>
    
  • 或者在Activity的onCreate里设置:
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if(getSupportActionBar() != null) {
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }
    

按这几步操作后,深色模式下Toolbar就不会再显示应用名称了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:49:08