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

时间:2013-08-17 11:41:32

标签: android colors background android-actionbar navigation-drawer

我在我的项目中使用Android Navigation bar, 我想将动作栏中的顶部颜色更改为红色,我该怎么做? 我有类似的东西,

top black

我想要这样的东西,

top red

我怎样才能实现这一目标?

10 个答案:

答案 0 :(得分:166)

您可以通过创建自定义样式来定义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

从这里采取:How do I change the background color of the ActionBar of an ActionBarActivity using XML?

答案 1 :(得分:50)

通常,Android操作系统利用“主题”允许应用程序开发人员将一组通用的UI元素样式参数全局应用于Android应用程序整体,或者替代地应用于单个Activity子类。

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

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

enter image description here

  1. AppCompat Dark Theme(Theme.AppCompat),
  2. enter image description here

    1. 这两者之间的混合,AppCompat Light Theme与Darker ActionBar。(Theme.AppCompat.Light.DarkActionBar)
    2. AndroidManifest.xml并看到标签,android主题被提到: - android:theme =&#34; @ style / AppTheme&#34;

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

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

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

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

      为此,我们需要创建一个新样式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 with pink background color

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

      现在要更改标题文字颜色,我们需要覆盖父参考 parent =&#34; @ style / TextAppearance.AppCompat.Widget.ActionBar.Title&#34;&gt;

      所以样式定义是

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

      我们将在 MyActionBar样式定义中引用此样式定义,因为TitleTextStyle修改是ActionBar父OS 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 With white title color  有关进一步的ActionBar选项菜单样式,请参阅this link

答案 2 :(得分:33)

仅适用于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

答案 3 :(得分:30)

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

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

以下是从开发者安卓网站获取的截图,以使其更加清晰,这里有一个link来阅读有关自定义颜色苍白的更多信息

enter image description here

答案 4 :(得分:7)

制作的另一种可能性。

actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(&#34;#0000ff&#34;)));

答案 5 :(得分:3)

自定义颜色:

 <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

答案 6 :(得分:2)

当我在上面使用AppCompatActivity时,答案对我没用。但是下面的解决方案有效:

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我可以使用titleTextColor更改ActionBar文本颜色

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="titleTextColor">#333333</item>
</style>

答案 9 :(得分:0)

使用此 - http://jgilfelt.github.io/android-actionbarstylegenerator/

使用实时预览在几分钟内自定义操作栏的好工具。