无法更改ActionBar的背景颜色

时间:2014-12-18 21:28:49

标签: android android-actionbar

我试图更改Android应用的背景颜色,但我无法做到。我搜索过很多帖子,但没有解决方案解决了我的问题。

这里的mine styles.xml:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#ff0000</item>
</style>


</resources>

正如您所看到的,我只想将条形设置为红色。 这是我的清单:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MenuActivity"
        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>

正如您所见,主题已正确设置。所以你可以看到,这是我的傻瓜:

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    ...
    minSdkVersion 15
    targetSdkVersion 21



}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

所以,即使这看起来不错,也没有将我的ActionBar设置为红色。我试过跟随很多指南(包括官方指南),并按照他们的说法做了一切。我错过了什么?感谢您提前耐心:)

2 个答案:

答案 0 :(得分:8)

由于您使用的是AppCompat库,因此您应该处理较旧的Android版本(就像使用ActionBarSherlock库时一样):

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/ActionBar</item>
        <item name="actionBarStyle">@style/ActionBar</item>
    </style>

    <style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@android:color/red</item>
        <item name="background">@android:color/red</item>
    </style>
</resources>

没有android命名空间的项目用于设置旧版Android上使用的appcompat操作栏。

有关详细信息,请参阅this answer

您还应检查,您可能为各种屏幕尺寸和sdk版本生成了更多styles.xml个文件。

您可能还希望将ActionBar样式声明添加到这些其他样式中:看起来您的测试设备使用的是其他样式,而不是默认设置。

答案 1 :(得分:0)

<style name="Demo_Theme" parent="Theme.AppCompat.Light">
    <item name="android:actionBarStyle">@style/actionBG</item>
    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/actionBG</item>
</style>

<style name="actionBG" parent="Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@color/test_bg_color</item>
    <!-- Support library compatibility -->
    <item name="background">@color/test_bg_color</item>
</style>

这应该可以正常工作。