2015-08-26 117 views
1

我想在整個應用程序中更改顏色。Android ActionBar顏色

在我AndroidManfiest.xml我有正確的代碼:

<application 
     android:label="@string/AppName" 
     android:icon="@drawable/Icon" 
     android:theme="@style/MyCustomTheme" 
     android:name="MyAppName" 
     android:allowBackup="true"> 

而且在文件夾,我有app_theme.xml

<style name="MyCustomTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarTheme</item> 
    <item name="android:icon">@android:color/transparent</item> 
    <item name="android:displayOptions"></item> 
</style> 

<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/actionBarColor</item> 
    <item name="android:titleTextStyle">@style/Theme.TitleTextStyle</item> 
</style> 

<style name="Theme.TitleTextStyle" parent="@android:style/Widget.TextView"> 
    <item name="android:textSize">22sp</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textColor">#FFFFFF</item> 
</style> 

它作品很奇怪......我只有在應用程序加載時,我的操作欄顏色爲,此後返回到默認顏色。

SOLUTION

public class BaseActivity extends AnnotatedActivity { 

@Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 

     if(getSupportActionBar()!=null) { 
      getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#009688"))); 
      getSupportActionBar().show(); 
     } 
    } 

} 

和每一個活動都必須延伸BaseActivity。

問候

+1

您是否爲自己的活動定義了不同的主題? –

+0

@Prera​​kSola不,每個活動都有相同的主題。 –

+0

讓我看看你的清單文件 –

回答

1
// not able to get action 
    if(getActionBar()!=null){// actionbar is not null 
     // now change color of action bar 
     getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#E77A2B"))); 
     //put any color in parseColor. 
     getActionBar().show(); 
    }else{ 
     System.out.println("getActionbar is null"); 

    } 
+0

我將此代碼添加到了我的BaseActivity中的protected void onPostCreate(Bundle savedInstanceState)**方法中,並且每個後續活動都將其擴展。非常感謝。 –

+0

請勿使用System.out.println,請改用Log.error/debug ... – agilob

0

由於您使用的程序兼容性庫

<item name="colorPrimary">@color/color_name</item> 

設置顏色爲動作條

所以你默認的主題將是

<style name="MyCustomTheme" parent="Theme.AppCompat.Light"> 

    <item name="colorPrimary">@color/color_name</item> 

    <item name="android:icon">@android:color/transparent</item> 
    <item name="android:displayOptions"></item> 
</style> 
+0

這可能是不錯的,但「找不到與給定名稱匹配的資源」。沒有屬性「colorPrimary」。 –