Android Studio深色模式下ActionBar颜色无法修改的问题求助
解决深色模式下ActionBar颜色未更新的问题
问题描述
我在Android Studio中尝试修改应用的ActionBar在深色模式下的颜色,已在values目录添加night/colors.xml文件,修改night/themes.xml中的颜色值替换原黑色,但仅部分文本颜色变化,ActionBar颜色未改变,请问该如何解决?
相关代码
night/themes.xml
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/purple_200</item> <item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorOnPrimary">@color/black</item> <!-- Secondary brand color. --> <item name="colorSecondary">@color/teal_200</item> <item name="colorSecondaryVariant">@color/teal_200</item> <item name="colorOnSecondary">@color/black</item> <!-- Status bar color. --> <item name="android:statusBarColor">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> </style> </resources>
night/colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#239090</color> <color name="purple_700">#239090</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="blue">#239090</color> <color name="grey">#242B2E</color> </resources>
(注:上述代码中已将颜色改回黑色)
常规themes.xml
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/purple_500</item> <item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorOnPrimary">@color/white</item> <!-- Secondary brand color. --> <item name="colorSecondary">@color/teal_200</item> <item name="colorSecondaryVariant">@color/teal_700</item> <item name="colorOnSecondary">@color/black</item> <!-- Status bar color. --> <item name="android:statusBarColor">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> </style> </resources>
解决方案
方法一:显式指定ActionBar背景色
Theme.MaterialComponents.DayNight.DarkActionBar父主题在深色模式下会默认使用深色背景,可能覆盖你设置的colorPrimary。直接添加ActionBar背景属性即可:
在night/themes.xml的Theme.TestApp样式中加入:
<!-- 针对原生ActionBar --> <item name="actionBarBackground">@color/purple_700</item> <!-- 针对Material Components Toolbar --> <item name="toolbarStyle">@style/CustomDarkToolbar</item>
同时在night/themes.xml中定义自定义Toolbar样式:
<style name="CustomDarkToolbar" parent="Widget.MaterialComponents.Toolbar.Primary"> <item name="background">@color/purple_700</item> </style>
方法二:改用自定义Toolbar(更灵活)
如果希望完全控制ActionBar样式,建议改用NoActionBar主题,手动添加Toolbar:
- 修改night/themes.xml的父主题:
<style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <!-- 保留原有属性不变 --> </style>
- 在Activity布局中添加MaterialToolbar:
<com.google.android.material.appbar.MaterialToolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextColor="?attr/colorOnPrimary" />
- 在Activity的onCreate方法中绑定Toolbar:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MaterialToolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); }
方法三:清理缓存并重建项目
Android Studio的缓存可能导致资源未及时更新,执行以下步骤:
- 点击菜单栏
Build→Clean Project - 接着点击
Build→Rebuild Project - 重启Android Studio后重新运行应用
内容的提问来源于stack exchange,提问作者Marfog509
相关产品推荐
相关产品推荐

