【问题标题】:Change background color of Android Action Bar更改 Android 操作栏的背景颜色
【发布时间】:2015-02-27 06:44:03
【问题描述】:

我有一个带有操作栏的活动。 minSdkVersion 为 11。

操作栏是灰色的,我想将其更改为其他颜色,以便与我的应用程序中的其他颜色匹配。

我创建了以下样式

<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">#FFF</item>
</style>

并在 appmanifest 中将此活动的主题设置为 MyTheme,但是当我运行应用程序时出现此错误:

You need to use a Theme.AppCompat theme (or descendant) with this activity.

我做错了什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    https://developer.android.com/training/basics/actionbar/styling.html,特别是这些部分

    注意:如果您将支持库 API 用于操作栏, 那么您必须使用(或覆盖) Theme.AppCompat 系列样式 (而不是 Theme.Holo 系列,在 API 级别 11 和 更高)

    使用支持库时,您必须改用 Theme.AppCompat 主题:

    Theme.AppCompat 用于“深色”主题。
    Theme.AppCompat.Light 用于“轻”主题。
    Theme.AppCompat.Light.DarkActionBar 用于浅色主题 带有深色操作栏。

    基本上你必须用“AppCompat”替换“Holo”

    【讨论】:

      【解决方案2】:

      如果您使用ActionBarActivity,则需要使用AppCompat 主题,它将Lollipop 风格的Action Bars 带到所有设备,并支持Material Color Palette 允许您编写主题,例如

      <style name="MyTheme" parent="@android:style/Theme.AppCompat.Light">
        <item name="ColorPrimary">@color/primary</item>
      </style>
      

      自动设置操作栏颜色的样式。

      如果您不想使用其中任何一个(并且在 Lollipop 设备上看起来非常不同),您可以改为扩展 FragmentActivityActivity,具体取决于您是否要使用支持库片段(哪个向后移植并修复了一些关于嵌套片段和状态保存的问题)。

      【讨论】:

        【解决方案3】:

        只需使用它,如果您在 Activity 上扩展 ActivityActionBar,那么您需要使用 AppCompat 主题。

        <style name="AppCompatTheme" parent="@android:style/Theme.AppCompat.Light">
          <item name="ColorPrimary">@color/primary</item>
        </style>
        

        或者使用 style/Theme.AppCompat.Dark 作为白色文本:)

        【讨论】:

        • 检索项目的父项时出错:找不到与给定名称“@android:style/Theme.AppCompat.Light”匹配的资源。
        • 你是否在你的活动上扩展 ActionBarActivity ?
        • 是的,我正在照你说的做
        • 试试这个
        • 错误:(18, 21) 找不到与给定名称匹配的资源:attr 'ColorPrimary'。