更改ActionBarSherlock背景颜色

Kri*_*s B 37 android android-ui actionbarsherlock

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

根据站点(链接),似乎您可以继承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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Jak*_*ton 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>
Run Code Online (Sandbox Code Playgroud)

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

  • @JakeWharton`actionBarStyle`需要`API Level 11`.如果目标不到11,有没有办法做到这一点?实际上我只是意识到只有`android:actionBarStyle`需要11,尽管这似乎仍然没有做任何事情. (3认同)

ali*_*tur 54

我刚刚用过

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c")));
Run Code Online (Sandbox Code Playgroud)

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

  • @alicanbatur它是,但如果你打算在ActionBar中拥有自己的风格并在整个应用程序中使用它,那么如果你在每个想要修改你的背景的类中粘贴那行代码就不是很好:) (2认同)