我想在这个问题上为未来的读者添加我的观察(使用 min sdk 8,target sdk 19)。
这会覆盖跨版本的默认背景并设置您想要的颜色。
注意:我在各种帖子上看到并尝试将背景颜色设置如下:
ColorDrawable colorDrawable = new ColorDrawable();
colorDrawable.setColor(R.color.your_desired_color);
actionBar.setBackgroundDrawable(colorDrawable);
但它不起作用,我暂时不知道原因。所以我成功地尝试了上面提到的代码。
- 如果您想在代码中设置操作栏的背景颜色(以及其他属性),您可以使用样式和主题。我做了如下造型。
在 res/values/style.xml 里面
<resources>
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 11 theme customizations can go here. -->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<!-- custom theme for my app -->
<style name="MyAppTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/bgcolor</item>
</style>
</resources>
在 res/values-v11 和 res/values-v14 中
<resources>
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 11 theme customizations can go here. -->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<!-- custom theme for my app -->
<style name="MyAppTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/bgcolor</item>
</style>
</resources>
注意:
由于我必须在 android 版本中对操作栏有类似的外观,因此我已将代码从 res/values 复制粘贴到 res/values-v11 和 res/values-v14 中。但令我惊讶的是,我没有得到想要的结果。原因?我们需要在 android v11 及更高版本的标签之前添加“android”命名空间。所以我将actionBarStyle更改为android:actionBarStyle并将背景更改为android:background。这给我带来了想要的结果。