更改Android Action Bar的背景颜色

时间:2015-02-26 22:30:56

标签: android

我有一个带有操作栏的活动。 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>

并将此活动的主题设置为MyTheme,但是当我运行该应用程序时,我收到此错误:

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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

  

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

  

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

     

主题.AppCompat为“黑暗”主题。
  Theme.AppCompat.Light为“轻”主题。
  Light主题的Theme.AppCompat.Light.DarkActionBar   一个黑暗的动作吧。

基本上你必须用'AppCompat'替换'Holo'

答案 1 :(得分:0)

如果您使用ActionBarActivity,则需要使用AppCompat主题,它将Lollipop样式操作栏带到所有设备并支持Material Color Palette,允许您编写主题,例如

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

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

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

答案 2 :(得分:0)

只需使用此功能,如果您在活动中扩展ActivityActionBar,则需要使用AppCompat主题。

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

或使用style / Theme.AppCompat.Dark获取白色文本:)