2016-01-03 79 views
0

我已經嘗試查看以下主題中找到了答案,以我的問題:不能更改背景顏色操作欄

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清單:

<?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> 
+0

是否有一個特別的原因,你使用的是Holo主題而不是AppCompat? – ianhanniballake

+0

這兩個示例都使用'Theme.AppCompat'主題作爲基礎主題。您在代碼中使用舊的'Theme.Holo'。 – Sharj

+0

我沒有理由使用holo。我更新了代碼,以便使用AppCompat(如其他答案中所示),但我仍然遇到同樣的問題。 – KillerByte

回答

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

+0

我應該注意,除了我以前用於向後兼容的操作欄樣式之外,還應該添加這些項目。 – KillerByte

0

你必須犧牲顯示了幾毫秒的動作條的風格略有閃爍時,應用程序的情況下,開始要使用Java來設置任何視圖的樣式,因爲它根據樣式資源上的佈局定義來設置佈局。

如果您想隱藏Java,它會在開始時顯示一個閃爍的操作欄。

所以會在其他造型的情況下。

所以你更好地從style.xml的樣式,但如果輕微的眨眼就可以用Java去。

+0

請參閱下面的答案。我終於弄清楚了這個問題。 – KillerByte

+0

不錯,它是一個很好的工作,我希望它能滿足你的需求:) – erluxman