在Android

时间:2015-04-30 02:07:34

标签: android customization android-theme android-appcompat

我已经在App上使用了AppCompat Light DarkActionBar主题。

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

enter image description here

是否可以更改此ActionBar的背景颜色和文字颜色?如果是,怎么样?

2 个答案:

答案 0 :(得分:46)

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

<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>

另一方面,以下代码将允许您设置窗口的样式。

<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>

答案 1 :(得分:2)

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

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