93

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

顶黑

我想要这样的东西,

顶红

我怎样才能做到这一点?

4

10 回答 10

180

您可以通过创建自定义 Style来定义 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 的背景颜色?

于 2013-08-17T11:48:59.673 回答
62

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

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

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

在此处输入图像描述

  1. AppCompat 深色主题(Theme.AppCompat),

在此处输入图像描述

  1. 以及这两者之间的混合,AppCompat Light Theme with the 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:--

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

@style/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 父 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 有关更多 ActionBar 选项菜单样式,请参阅此链接

于 2015-09-01T05:31:22.853 回答
33

仅适用于 Android 3.0 及更高版本

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

res/values/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>

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

了解更多详情

于 2013-08-17T11:48:39.260 回答
32

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

<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 网站截取的屏幕截图,以使其更清晰,这里是阅读有关自定义调色板的更多信息的链接

在此处输入图像描述

于 2015-08-24T11:55:57.897 回答
7

制作的另一种可能性。

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

于 2014-05-06T20:08:30.220 回答
5

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

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="titleTextColor">#333333</item>
</style>
于 2019-10-26T22:03:24.167 回答
4

自定义颜色:

 <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 操作栏

于 2016-01-16T14:30:46.847 回答
3

当我使用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

于 2015-11-02T08:39:59.460 回答
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>
于 2015-05-23T16:16:45.177 回答
0

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

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

于 2015-12-10T11:19:38.877 回答