更改ActionBarSherlock背景颜色

时间:2012-04-08 16:33:13

标签: android android-ui actionbarsherlock

我正在尝试实现ActionBarSherlock,因为我被告知它实现和自定义相对容易。我发现它很容易实现,但是我试图改变ActionBar的背景颜色并证明它很难。

根据网站(link),您似乎可以继承其中一个ActionBarSherlock的主题,然后覆盖您需要的属性。

这是我到目前为止所做的:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="Theme.ActionBar" parent="Theme.Sherlock.ForceOverflow">
      <item name="android:background">#000000</item>
      <item name="background">#000000</item>
    </style>
</resources>

我注意到内置主题正在使用图像作为背景,但我在祈祷我不必创建图像来改变背景颜色。

感谢。

3 个答案:

答案 0 :(得分:77)

操作栏背景颜色在操作栏的样式中定义,而不是在主题本身中定义。你需要做这样的事情:

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow">
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="android:background">#ff000000</item>
    <item name="background">#ff000000</item>
</style>

小心使用XML中定义的颜色。 ColorDrawable并不尊重它在预蜂窝前的视图界限,因此如果您使用带有单独背景的标签导航进行堆叠标签视图,则会遇到问题。

答案 1 :(得分:54)

我刚用过

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c")));

它改变了背景颜色。希望能帮助到你。

答案 2 :(得分:2)

杰克沃顿提到的代码是真的。但是,如果你有minSDK&lt; 11,那么将代码应用到styles.xml可能不起作用,因为API-11 +支持android:actionBarStyle

解决该错误:

在res文件夹中创建值为v11的文件夹,并创建如上所述的XML文件。