更改 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 之前,使用堆叠颜色将无法正确显示。 听起来不错。感谢您的回复和出色的产品。 @JakeWharton actionBarStyle 需要 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 - 带有分隔线的操作栏自定义背景

ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃

Android怎么动态更改actionbar的背景颜色

在Ubuntu里 可以任意更改“终端”背景颜色教程

如何用js更改tr的背景颜色 新手求助

UITableViewHeaderFooterView:无法更改背景颜色