Android:ActionBar 自定义问题

Android: Problems with ActionBar Customization

我刚刚开始学习 Android 我自己的开发,我遇到了一个问题,我需要帮助。

我正在了解 ActionBar。我有兴趣自定义 ActionBar.

我更改其背景颜色和项目间距所遵循的步骤是:

  1. 这个想法是要有一个带有 ActionBar 的基本主题。然后自定义它。代码:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
    </style>
    
    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#F44336</item>
    </style>
    

  2. 接下来,在我的 AndroidManifest.xml 中,我使用我创建的自定义主题。代码:

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

但是我的ActionBar的颜色还是黑色的。我究竟做错了什么?我错过了什么吗?

您正在使用 appcompat-v7 操作栏向后移植。要设置操作栏的颜色,请在您的主题中使用 colorPrimary,而不是 android:background

例如,这个主题设置了三种主要的色调:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Apptheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
  </style>
</resources>

这个特定的示例恰好通过颜色资源定义了颜色值,在 res/values/colors.xml 文件中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3f51b5</color>
  <color name="primary_dark">#1a237e</color>
  <color name="accent">#ffee58</color>
</resources>

然后使用自定义主题的 activity 获取主要颜色作为操作栏背景:

(来自 this sample project