在 android 上更改 AppCompat Light DarkActionBar 主题的背景和文本颜色

Changing Background and text color of AppCompat Light DarkActionBar Theme on android

我为我的应用程序使用了 AppCompat Light DarkActionBar 主题。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        
</style>

这个ActionBar的背景颜色和文字颜色可以改吗?如果是,如何?

以下代码将允许您完全设置操作栏的样式。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.AppTheme.ActionBar</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppTheme.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
</style>

覆盖操作栏 样式 以更改背景颜色或高度。

<style name="Widget.AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <!-- action bar background - without android prefix -->
    <item name="background">...</item>
    <!-- action bar elevation - without android prefix -->
    <item name="elevation">4dp</item>
</style>

覆盖操作栏 主题 以定义操作栏内所有视图的特殊行为,例如操作项、波纹背景颜色、文本颜色。

<style name="ThemeOverlay.AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- title text color -->
    <item name="android:textColorPrimary">...</item>
    <!-- subtitle text color -->
    <item name="android:textColorSecondary">?android:textColorPrimary</item>
    <!-- action menu item text color -->
    <item name="actionMenuTextColor">?android:textColorPrimary</item>
    <!-- action menu item icon color -->
    <item name="colorControlNormal">?android:textColorPrimary</item>
</style>

您还可以更改弹出主题。

<style name="ThemeOverlay.AppTheme.PopupMenu" parent="ThemeOverlay.AppCompat.Dark">
    <!-- popup menu background - NEVER "android:background" !!! in themes -->
    <item name="android:colorBackground">...</item>
    <!-- popup menu item text color -->
    <item name="android:textColorPrimary">...</item>
</style>

另一方面,以下代码将允许您设置 window.

的样式
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- window background - NEVER "android:background" in themes !!! -->
    <item name="android:windowBackground">...</item>
    <item name="android:textColorPrimary">...</item>
    <item name="android:textColorSecondary">...</item>
</style>

您也可以直接更改操作栏上的文字颜色。 但要小心!这不会影响菜单项或图标的文本颜色或波纹颜色! 这可能不是您想要的 运行。

<style name="Widget.AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <!-- title text color -->
    <item name="titleTextColor">?android:textColorPrimary</item>
    <!-- subtitle text color -->
    <item name="subtitleTextColor">?android:textColorSecondary</item>
</style>

是的,可以更改操作栏上文本的颜色。将此添加到您的 activity 的 onCreate:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));