我正在尝试实现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>
我注意到内置主题正在使用图像作为背景,但我在祈祷我不必创建图像来改变背景颜色。
感谢。
答案 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文件。