如何使用Theme.AppCompat.DayNight主题修改ActionBar的文字颜色
你完全可以通过重写Theme.AppCompat.DayNight的主题属性修改ActionBar文字颜色,无需更换父主题,具体修改方案如下:
方案1:完整自定义ActionBar样式(可精细控制标题、菜单、图标颜色)
- 先在你的
res/values/styles.xml中新增两个自定义子样式:
<!-- ActionBar整体样式 --> <style name="CustomActionBar" parent="Widget.AppCompat.ActionBar"> <!-- 关联自定义标题文字样式 --> <item name="titleTextStyle">@style/CustomActionBarTitle</item> <!-- 可选:修改ActionBar右侧菜单文字颜色 --> <item name="actionMenuTextColor">@color/white</item> <!-- 可选:修改ActionBar左侧返回键、菜单图标的颜色 --> <item name="colorControlNormal">@color/white</item> </style> <!-- ActionBar标题文字样式 --> <style name="CustomActionBarTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> <!-- 可按需添加字号、字体、字重等配置 --> <item name="android:textSize">18sp</item> </style>
- 在你现有的主主题
Theme.MyAapp中新增配置,引用上面定义的ActionBar样式即可:
<style name="Theme.MyAapp" parent="Theme.AppCompat.DayNight"> <!-- 原有配置保留不动 --> <item name="colorPrimary">@color/ocean</item> <item name="colorPrimaryVariant">@color/light_ocean</item> <item name="colorOnPrimary">@color/white</item> <item name="colorSecondary">@color/ocean</item> <item name="colorSecondaryVariant">@color/dark_ocean</item> <item name="colorOnSecondary">@color/ocean</item> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- 新增:引用自定义ActionBar样式 --> <item name="actionBarStyle">@style/CustomActionBar</item> </style>
方案2:快速修改(仅需调整标题、菜单文字)
如果不需要精细控制样式,你也可以直接在主主题中添加以下配置快速生效:
<item name="android:titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> <item name="actionMenuTextColor">@color/white</item>
注意事项
修改完成后请检查AndroidManifest.xml中的application节点或者对应Activity节点,确认android:theme属性的值是你自定义的Theme.MyAapp,避免主题未生效。另外你当前的主题名称拼写存在笔误(MyAapp多了一个字母A),确认和Manifest中引用的名称一致即可。
内容的提问来源于stack exchange,提问作者Konrad
相关产品推荐
相关产品推荐

