Android ActionBar无法更改背景颜色。

9
我正在尝试更改操作栏的背景颜色,但是它没有变化。如果使用了AppCompat主题,可能会影响我的应用程序。
这是我正在使用的主题。我的应用程序指向使用此主题,因此那不是问题。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<!-- Action Bar Styles -->
<style name="ActionBar" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/blue</item>
    <item name="background">@color/blue</item>
</style>


你的清单文件里也使用了 AppTheme 主题吗? - waqaslam
@waqaslam 是的。我在这段代码中做错了什么吗? - Moussa Harajli
1
AFAIR <item name="android:actionBarStyle">@style/ActionBar</item> 在API > 11中已经被删除。有关详细信息,请参见https://developer.android.com/training/basics/actionbar/styling.html。 - Alexander Zhak
@AlexanderZhak 我正在使用支持ActionBar与Gingerbread。 - Moussa Harajli
3个回答

15
在您的ActionBar样式中,删除android:background,只保留background属性。同时,请确保在AndroidManifest.xml文件中的应用程序标签或扩展ActionBar的活动中实现您的AppTheme。我还添加了"@style/"属性到Widget.AppCompat之前,因为它是在Android库中定义的默认样式。
您的代码应该像这样:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<!-- Action Bar Styles -->
<style name="ActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="background">#0000ff</item>
</style>

1
请注意,在命名空间中使用“android: actionBarStyle”和“actionBarStyle”名称以确保与背景兼容。 - Karol Żygłowicz

0
根据此链接https://developer.android.com/reference/android/R.attr.html#background,似乎它不支持颜色资源,因此您可以给它一个十六进制颜色值或创建一个使用所需颜色的可绘制对象。您可以尝试以下替代方法,看看是否有效。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<!-- Action Bar Styles -->
<style name="ActionBar" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">#0000ff</item>
    <item name="background">#0000ff</item>
</style>

使用构建工具21.1.2时,它不允许直接将颜色设置给主题。你必须使用"@color"或"@drawable"来设置它。 - Adil Soomro

0

你也可以从代码中设置这个

ab.setBackgroundDrawable(new ColorDrawable(newcolor));

以防万一你的xml文件无法工作


我想要将其以XML形式呈现,这样我就可以在整个应用程序中使用颜色,并且不必在每个活动中都添加那行代码。 - Moussa Harajli
请看以下翻译的内容: <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">ANY_HEX_COLOR_CODE</item> </style> 其中一个原因是由于您在样式标签中使用了错误的父级。 - Amrut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接