如何设置自定义的ActionBar颜色/样式?

我在我的项目中使用Android Navigation bar ,我想将操作栏中的顶部颜色更改为红色,我该怎么做? 我有这样的事情

顶部黑色

我想要这样的东西,

顶红色

我怎么能做到这一点?

你可以通过创build一个自定义的样式来定义ActionBar(和其他东西)的颜色:

只需编辑Android项目的res / values / styles.xml文件。

比如像这样:

 <resources> <style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBarTheme</item> </style> <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">ANY_HEX_COLOR_CODE</item> </style> </resources> 

然后将“MyCustomTheme”设置为包含ActionBar的Activity的主题。

你也可以像这样设置ActionBar的颜色:

 ActionBar actionBar = getActionBar(); actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); // set your desired color 

采取从这里: 如何更改使用XML的ActionBarActivity的ActionBar的背景颜色?

一般来说,Android OS利用“主题”来允许应用程序开发人员将全局的UI元素样式参数应用于整个Android应用程序,或者也可以应用于单个Activity子类。

因此,有三种主stream的Android操作系统“系统主题”,您可以在Android Manifest XML文件中指定当您为V3.0及更高版本开发应用程序

我在这里指的是(APPCOMPAT)支持库: – 所以这三个主题是1. AppCompat Light Theme (Theme.AppCompat.Light)

在这里输入图像描述

  1. AppCompat黑暗主题(Theme.AppCompat),

在这里输入图像描述

  1. 而这两者之间的混合,AppCompat Light Theme与Darker ActionBar(Theme.AppCompat.Light.DarkActionBar)

AndroidManifest.xml并看到标签,android主题被提及为: – android:theme =“@ style / AppTheme”

打开Styles.xml,我们在那里声明基础应用程序主题:

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

我们需要重写这些父主题元素来设置操作栏的样式。

具有不同颜色背景的ActionBar: –

要做到这一点,我们需要创build一个新的风格MyActionBar(你可以给任何名字)带有@ style / Widget.AppCompat.Light.ActionBar.Solid.Inverse的父引用,它保存Android ActionBar UI元素的样式特征。 所以定义是

 <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="background">@color/red</item> </style> 

我们需要在我们的AppTheme中引用这个定义,指出重写的ActionBar样式为 –

@风格/ MyActionBar 带有粉红色背景颜色的ActionBar

更改标题栏的文字颜色(例如黑色到白色): –

现在要改变标题的文字颜色,我们需要覆盖父引用parent =“@ style / TextAppearance.AppCompat.Widget.ActionBar.Title”>

所以风格的定义是

 <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> </style> 

我们将在MyActionBar样式定义中引用此样式定义,因为TitleTextStyle修改是ActionBar父操作系统UI元素的子元素。 所以MyActionBar风格元素的最终定义是

 <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="background">@color/red</item> <item name="titleTextStyle">@style/MyActionBarTitle</item> </style> 

所以这是最后的Styles.xml

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- This is the styling for action bar --> <item name="actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="background">@color/red</item> <item name="titleTextStyle">@style/MyActionBarTitle</item> </style> <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> </style> </resources> 

ActionBar白色标题颜色 有关进一步的ActionBar选项菜单样式,请参阅此链接

仅适用于Android 3.0及更高版本

当仅支持Android 3.0及更高版本时,您可以像这样定义操作栏的背景:

RES /值/的themes.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@style/Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:background">#ff0000</item> </style> </resources> 

适用于Android 2.1及更高版本

使用支持库时,您的样式XML文件可能如下所示:

 <?xml version="1.0" encoding="utf-8"?> <resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="android:background">@drawable/actionbar_background</item> <!-- Support library compatibility --> <item name="background">@drawable/actionbar_background</item> </style> </resources> 

然后将您的主题应用到您的整个应用或个人活动中:

更多详情Documentaion

您可以通过以下方式更改操作栏的颜色:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/green_action_bar</item> </style> 

多数民众赞成您需要改变行动栏颜色。

另外,如果你想改变状态栏的颜色只需添加行:

  <item name="android:colorPrimaryDark">@color/green_dark_action_bar</item> 

这是一个从开发人员的Android网站截图,使其更清楚,这里是一个链接 ,阅读更多关于定制颜色古怪

在这里输入图像描述

另一个可能性。

actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(“#0000ff”)));

正如我上面使用AppCompatActivity答案没有为我工作。 但下面的解决scheme工作:

res / styles.xml中

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> </style> 

PS:我用colorPrimary而不是android:colorPrimary

自定义颜色:

  <style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/ColorPrimary</item> <item name="colorPrimaryDark">@color/ColorPrimaryDark</item> <!-- Customize your theme here. --> </style> 

定制风格:

  <style name="Theme.AndroidDevelopers" parent="android:style/Theme.Holo.Light"> <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item> <item name="android:popupMenuStyle">@style/MyPopupMenu</item> <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item> <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> <item name="android:listChoiceIndicatorMultiple">@drawable/ad_btn_check_holo_light</item> <item name="android:listChoiceIndicatorSingle">@drawable/ad_btn_radio_holo_light</item> </style> 

更多: Android的ActionBar

在style.xml中添加这个代码

 <resources> <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyAction</item> </style> <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">#333333</item> </style> </resources> 

使用这个 – http://jgilfelt.github.io/android-actionbarstylegenerator/

在几分钟内用实时预览来定制您的操作栏的好工具。