更改 ActionBarSherlock 背景颜色
Posted
技术标签:
【中文标题】更改 ActionBarSherlock 背景颜色【英文标题】:Change ActionBarSherlock background color 【发布时间】:2012-04-21 07:21:44 【问题描述】:我正在尝试实现 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>
我注意到内置主题使用图像作为背景,但我祈祷我不必创建图像来更改背景颜色。
谢谢。
【问题讨论】:
【参考方案1】:操作栏背景颜色是在操作栏的样式中定义的,而不是在主题本身中定义的。您需要执行以下操作:
<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
不尊重它在预Honeycomb 上的视图边界,因此如果您使用带有单独背景的标签导航堆叠标签视图,您将遇到问题。
【讨论】:
感谢您的回复。我没有使用标签或任何东西,只是一个带有一些操作的 ActionBar,所以可以使用颜色而不是图像吗?我在 8 个不同的应用程序上使用 ActionBarSherlock,但我不具备创建图像的专业知识。 顺便说一句,您的代码可用于添加背景颜色。谢谢。 使用颜色是安全的,只要您不将其用于堆叠背景属性。常规背景和分割背景都可以,但在 3.0 之前,使用堆叠颜色将无法正确显示。 听起来不错。感谢您的回复和出色的产品。 @JakeWhartonactionBarStyle
需要 API Level 11
。如果目标小于 11,有没有办法做到这一点?实际上我刚刚意识到只有android:actionBarStyle
需要11,尽管这似乎仍然没有任何作用。【参考方案2】:
我刚用过
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c")));
它改变了背景颜色。希望能帮助到你。
【讨论】:
@alicanbatur 是的,但是如果您打算在 ActionBar 中拥有自己的样式并在整个应用程序中使用它,那么如果您将那行代码粘贴到每个类你想修改你的背景:) 感谢您节省了很多精力。 最简单的方法:)【参考方案3】:Jake Wharton 提到的代码是真实的。但是,如果您有 minSDK
解决这个错误:
在您的 res 文件夹中创建一个 values-v11 文件夹,并按照上述方法创建 XML 文件。
【讨论】:
以上是关于更改 ActionBarSherlock 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
ActionBarSherlock - 带有分隔线的操作栏自定义背景