2

如何更改操作栏(actionbarsherlock)的颜色?

我已经尝试过以下代码,但没有运气。

<style name="MyTheme.ActionBarStyle" parent="Widget.Sherlock.ActionBar">
    <item name="background">#ffffffff</item>
</style>

<style name="Theme.SherlockCustom" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>

+还有一件事,我要添加如下子菜单。这个按钮的背景颜色也是白色的(因为 Sherlock Theme)。我可以改变那些颜色吗?

    SubMenu sub = menu.add("abcd");
    sub.add(0, 1, 0, "Default");
    sub.add(0, 2, 0, "Light");
    sub.add(0, 3, 0, "Light (Dark Action Bar)");
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
4

6 回答 6

6

在设置 actionBar 的样式时,最好的办法是使用非常流行的Action Bar Style Generator,它是一个 Web 应用程序,可让您预览 ActionBar 的外观,并让您下载所有必要的资源以简单将其添加到您的产品中:9patches、state-drawables 和 .xmls。

如果您不确定如何使用它,这里有一个快速指南

使用它是确保操作栏看起来很棒的最佳方法,而不会浪费您本可以花在有价值的 Java 代码上的大量时间。

于 2013-04-07T18:54:18.490 回答
2

我认为您应该使用@style/Widget.Sherlock.Light.ActionBar.Solidor@style/Widget.Sherlock.Light.ActionBar.Solid.Inverse作为 ActionBarStyle 的父级以及属性backgroundandroid:background. 例如:

<style name="MyTheme.ActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
    <item name="background">#ffffff</item>
    <item name="android:background">#ffffff</item>
</style>

<style name="Theme.SherlockCustom" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>
    <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>

ActionBar 样式生成器可以帮助您设置子菜单的样式。

于 2013-04-07T18:46:36.107 回答
2
 I just used below Code 

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

 it changed the bg color. Hope, it helps.
于 2013-09-14T14:14:50.570 回答
1

您第一次发布的内容看起来几乎完全正确,这是您需要添加以更改 ActionBar 颜色的主题。您还应该使用您的颜色添加 android:background 属性:

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

<style name="Theme.SherlockCustom" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>

但是,您需要确保将其应用于整个应用程序,或者仅应用于要在其中显示它的活动。您可以在 AndroidManifest.xml 中的应用程序标记或活动标记中使用 android:主题属性。

<application
    android:name="com.your.package.name"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/Theme.SherlockCustom" >
于 2013-04-07T18:45:41.227 回答
0

使用这种风格:

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

我假设您在具有 HC 或更高版本的设备上测试了您的应用程序,并且由于您没有为本机 ActionBar 指定背景,因此它不起作用。将其更改为上面的样式,它应该可以工作。

于 2013-04-07T18:44:46.883 回答
-1

创建自定义操作栏,然后您将更改操作栏 Sherlock 的颜色.....

于 2013-07-17T13:17:13.400 回答