【问题标题】:Changing background color of actionbar更改操作栏的背景颜色
【发布时间】:2015-04-01 16:22:31
【问题描述】:

我的 Android 应用使用最低 SDK 版本 15。我正在尝试更改操作栏的背景颜色,并希望通过更改样式和主题来做到这一点。我已经尝试了很多东西,但背景仍然很暗。这是我的样式:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">#eeeeee</item>
</style>

在我的清单中,我将应用程序的主题设置为 AppTheme。

【问题讨论】:

    标签: android


    【解决方案1】:

    默认情况下,AppCompat 支持库使用colorPrimary 属性的值作为ActionBar 的颜色。

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">#eeeeee</item>
    </style>
    

    但是如果你想让ActionBar的颜色独立于主题的原色,那么你可以这样设置:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="actionBarStyle">@style/ActionBar</item>
    </style>
    
    <style name="ActionBar" parent="Widget.AppCompat.ActionBar.Solid">
        <item name="background">@color/primary_teal_500</item>
    </style>
    

    【讨论】:

    • 您的第二个解决方案正是我想要的。它看起来与我发布的内容几乎相同,除了当我将 ActionBar 样式的父级设置为 @android:style/Widget.Holo.Light.ActionBar 时,它不起作用。你的父母是正确的。
    【解决方案2】:

    使用 colorPrimary 和 colorPrimaryDark

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
    
            <item name="colorPrimary">@color/LightColor</item>
            <item name="colorPrimaryDark">@color/DarkColor</item>
    
        </style>
    

    【讨论】:

    • 这确实有效,但它提出了关于 colorPrimary 指的是什么的问题。这几乎肯定会改变许多使用此属性的其他事物的颜色,而不仅仅是操作栏。 Actionbar 不是有严格的属性吗?
    • @AndroidDev 你需要创建一个样式或者使用 ActionBarSherlock 库
    • 但我确实创建了一种样式,如我的帖子中所示。我不应该依赖一些第三方库。
    【解决方案3】:

    使用支持库时,定义操作栏如下:

    res/values/themes.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!-- the theme applied to the application or activity -->
        <style name="CustomActionBarTheme"
               parent="@style/Theme.AppCompat.Light.DarkActionBar">
            <item name="android:actionBarStyle">@style/MyActionBar</item>
    
            <!-- Support library compatibility -->
            <item name="actionBarStyle">@style/MyActionBar</item>
        </style>
    
        <!-- ActionBar styles -->
        <style name="MyActionBar"
               parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
            <item name="android:background">@drawable/actionbar_background</item>
    
            <!-- Support library compatibility -->
            <item name="background">@drawable/actionbar_background</item>
        </style>
    </resources>
    

    然后将您的主题应用到您的整个应用或单个活动:

    <application android:theme="@style/CustomActionBarTheme" ... />
    

    【讨论】:

      【解决方案4】:

      如下修改你的style.xml文件试试,

          <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
             <item name="android:background">#eeeeee</item>
          </style>
      

      你的清单如下,

      android:theme="@style/AppTheme" >
      

      【讨论】:

      • 根本没用。此外,没有名为“AppBaseTheme”的主题。我不得不使用@style/Theme.AppCompat.Light.DarkActionBar
      猜你喜欢
      • 2015-02-25
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      相关资源
      最近更新 更多