无法更改操作栏的背景颜色

时间:2016-01-03 20:43:25

标签: android android-actionbar

我已经尝试查看以下主题以找到我的问题的答案:

Android unable to change background color of ActionBar

Change Background color of the action bar using AppCompat

...但这些解决方案都没有帮助我解决问题。

我正在尝试更改操作栏的背景颜色(以及其他内容)。到目前为止,我已经能够改变其他一切的风格。这是我的styles.xml:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
        <item name="actionBarStyle">@style/AppTheme.ActionBar</item>
        <item name="android:windowBackground">@color/dark_green</item>
        <item name="android:buttonStyle">@style/AppTheme.Button</item>
        <item name="android:editTextStyle">@style/AppTheme.EditText</item>
        <item name="android:listViewStyle">@style/AppTheme.ListView</item>
        <item name="android:windowActionBar">true</item>
        <!--<item name="android:colorBackground">@color/dark_green</item>-->
    </style>

    <style name="AppTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/dark_green</item>
        <item name="background">@color/dark_green</item>
        <item name="android:colorPrimary">@color/dark_green</item>
        <item name="android:colorPrimaryDark">@color/dark_green</item>
    </style>

    <!-- Button theme -->
    <style name="AppTheme.Button">
        <item name="android:background">@drawable/background_button</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:padding">20dp</item>
    </style>

    <!-- Edit Text Theme -->
    <style name="AppTheme.EditText">
        <item name="android:background">@drawable/background_edittext</item>
        <item name="android:padding">14dp</item>
        <item name="android:layout_marginBottom">16dp</item>
        <item name="android:textColorHint">@color/light_gray</item>
        <item name="android:textCursorDrawable">@null</item>
        <item name="android:textSize">20dp</item>
    </style>

    <style name="AppTheme.ListView">
        <item name="android:textColor">@color/text_color</item>
        <item name="android:divider">@android:color/transparent</item>
    </style>

    <declare-styleable name="FixedAspectRatioFrameLayout">
        <attr name="aspectRatioWidth" format="dimension" />
        <attr name="aspectRatioHeight" format="dimension" />
    </declare-styleable>
</resources>

这是我的Android Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="io.myapp.app">

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/myapp_button"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".LoginActivity"
            android:label="@string/title_activity_login" />
        <activity
            android:name=".HomeActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ListOffersActivity"
            android:parentActivityName=".HomeActivity"
            android:launchMode="singleTop"/>
        <activity
            android:name=".ViewOfferActivity"
            android:label="@string/title_activity_view_offer"
            android:parentActivityName=".ListOffersActivity">
        </activity>
        <activity
            android:name=".SettingsActivity"
            android:label="@string/title_activity_settings"
            android:parentActivityName=".HomeActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="io.myapp.app.HomeActivity" />
        </activity>
        <activity android:name=".ListSavedOffersActivity"
            android:label="Saved Offers"
            android:parentActivityName=".HomeActivity"
            android:launchMode="singleTop"></activity>
    </application>

</manifest>

2 个答案:

答案 0 :(得分:0)

当你想要使用Java来设置任何视图样式时,你必须牺牲一个显示ActionBar样式的轻微闪烁几毫秒,因为它根据样式资源上的布局定义设置了布局。

如果你想隐藏Java,它会在开始时显示一个动作条的闪烁。

在其他造型案例中也是如此。

你最好从style.xml设置样式,但是如果稍微眨眼就可以使用Java。

答案 1 :(得分:0)

好吧,经过几天摆弄它,我发现问题主要是因为当你改变时,android(带有新材料主题和所有......)改变了操作栏中的颜色以下属性:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:colorPrimary">@color/dark_green</item>
        <item name="android:colorPrimaryDark">@color/darker_green</item>
</style>

这会将操作栏的颜色正确设置为@color/dark_green