回答

147

你可以通過定義動作條(和其他的東西)的顏色創建自定義風格

只需編輯RES /值/ styles.xml文件的Android項目。

例如像這樣:

<resources> 
    <style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBarTheme</item> 
    </style> 

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">ANY_HEX_COLOR_CODE</item> 
    </style> 
</resources> 

然後設置「MyCustomTheme」作爲活動包含動作條的主題。

您還可以設置顏色爲動作條是這樣的:

ActionBar actionBar = getActionBar(); 
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); // set your desired color 

從這裏摘自:How do I change the background color of the ActionBar of an ActionBarActivity using XML?

+0

它的工作,謝謝 –

+2

你是什麼意思「然後設置」MyCustomTheme「作爲你的活動的主題,包含ActionBar。」我怎麼做? –

+2

在您的活動XML必須添加*機器人:主題=「@風格/ MyCustomTheme」 *爲標籤 – PedroD

32

對於Android的3.0和更高版本

在支持的Android 3.0及更高只,你可以定義操作欄的背景是這樣的:

RES /價值/的themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- the theme applied to the application or activity --> 
    <style name="CustomActionBarTheme" parent="@style/Theme.Holo.Light.DarkActionBar"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

<!-- ActionBar styles --> 
    <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">#ff0000</item> 
    </style> 
</resources> 

對於Android 2.1及更高版本

當使用支持庫,你的風格的XML文件可能是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <!-- the theme applied to the application or activity --> 
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 

    <!-- Support library compatibility --> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
</style> 

<!-- ActionBar styles --> 
<style name="MyActionBar" 
     parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@drawable/actionbar_background</item> 

    <!-- Support library compatibility --> 
    <item name="background">@drawable/actionbar_background</item> 
    </style> 
</resources> 

你的主題,然後應用到您的整個應用程序或個別活動:

更多細節Documentaion

+0

+1給出的鏈接, –

+0

進來聊天室... – Piyush

+0

這是奇怪:你給android 3.0和更高的老式(全息)比2.1和更高(材料設計/應用程序).​​.. – Roel

7

製作的另一種可能性。

actionBar.setBackgroundDrawable(新ColorDrawable(Color.parseColor( 「#0000FF」)));

1

在style.xml添加此代碼

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyAction</item> 
    </style> 

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">#333333</item> 
    </style> 
</resources> 
23

你可以這樣改變操作欄的顏色:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/green_action_bar</item> 
</style> 

這就是所有你需要改變操作欄的顏色。

另外,如果你想改變狀態欄的顏色只是添加一行:

<item name="android:colorPrimaryDark">@color/green_dark_action_bar</item> 

下面是從開發商的Android網站進行屏幕截圖,以使其更清晰,這裏是一個link閱讀更多自定義顏色palete

enter image description here

+0

非常有幫助的圖片,謝謝! –

38

一般Android操作系統利用一個「主題」,讓應用程序開發人員在全球範圍內應用一套通用的UI元素的造型參數到Android應用整體,或者,也可以是單個Activity子類。

所以有三種主流的Android OS「系統的主題,」你可以在你的Android清單XML文件,當您正在開發3.0版本的應用程序和更高版本

我指的(程序兼容性)支持庫指定這裏: - 所以三個主題是 1.程序兼容性光主題(Theme.AppCompat.Light)

enter image description here

  • 程序兼容性暗主題(Theme.AppCompat),
  • enter image description here

  • 並與較深的ActionBar。(Theme.AppCompat.Light這兩個,程序兼容性光主題之間的混合。 DarkActionBar)
  • AndroidManifest.xml中,看到了標籤,Android的主題被提及: - 機器人:主題= 「@風格/ AppTheme」

    打開樣式s.xml,我們在此聲明基礎應用程序主題: -

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
        </style> 
    

    我們需要重寫這些父主題元素以設置操作欄的樣式。

    動作條不同顏色的背景: -

    要做到這一點,我們需要創建一個新的風格MyActionBar與家長參考@風格/ Widget.AppCompat.Light(你可以給任何名稱) .ActionBar.Solid.Inverse,其中包含Android ActionBar UI元素的樣式特徵。所以定義是

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

    而且這個定義我們需要在AppTheme參考,指着重寫動作條造型as--

    @style/MyActionBar ActionBar with pink background color

    更改標題欄文本顏色(例如黑到白) : -

    現在要更改標題文本顏色,我們需要覆蓋父引用parent =「@ style/TextAppearance.AppCompat.Widget。ActionBar.Title「>

    所以風格的定義是

    <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
        <item name="android:textColor">@color/white</item> 
    </style> 
    

    我們將引用這個樣式定義的MyActionBar樣式定義內,因爲TitleTextStyle修改是動作條父母的子元素OS UI元素。所以MyActionBar風格元素的最後定義將

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
        <item name="background">@color/red</item> 
        <item name="titleTextStyle">@style/MyActionBarTitle</item> 
    </style> 
    

    所以這是最後的Styles.xml

    <resources> 
        <!-- Base application theme. --> 
        <style name="AppTheme" parent="Theme.AppCompat.Light"> 
         <!-- This is the styling for action bar --> 
         <item name="actionBarStyle">@style/MyActionBar</item> 
        </style> 
    
        <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
         <item name="background">@color/red</item> 
         <item name="titleTextStyle">@style/MyActionBarTitle</item> 
        </style> 
    
        <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
         <item name="android:textColor">@color/white</item> 
        </style> 
    </resources> 
    

    ActionBar With white title color 如需進一步動作條選項菜單中的造型,正如我所用AppCompatActivity以上的答案並沒有爲我工作的參考this link

    +0

    嘿,它的工作。有人懷疑如果我想改變菜單溢出圖標的顏色,它會根據我們的主題改變顏色嗎?黑色主題的白色圖標和淺色主題的黑色圖標,我如何將它改爲白色?考慮你答案中的最後一張圖片。 –

    2

    。但是,下面的解決方案工作:

    RES/styles.xml

    <resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
        <!-- Customize your theme here. --> 
        <item name="colorPrimary">@color/colorPrimary</item> 
    </style> 
    


    PS:我用colorPrimary,而不是android:colorPrimary

    0

    使用此 - http://jgilfelt.github.io/android-actionbarstylegenerator/

    很好的工具,在兩分鐘的實時預覽來定製你的動作條。

    +0

    儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Marusyk

    2

    自定義顏色:

    <style name="AppTheme" parent="Theme.AppCompat.Light"> 
    
           <item name="colorPrimary">@color/ColorPrimary</item> 
           <item name="colorPrimaryDark">@color/ColorPrimaryDark</item> 
           <!-- Customize your theme here. --> 
        </style> 
    

    自定義樣式:

    <style name="Theme.AndroidDevelopers" parent="android:style/Theme.Holo.Light"> 
         <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item> 
         <item name="android:popupMenuStyle">@style/MyPopupMenu</item> 
         <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item> 
         <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> 
         <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> 
         <item name="android:listChoiceIndicatorMultiple">@drawable/ad_btn_check_holo_light</item> 
         <item name="android:listChoiceIndicatorSingle">@drawable/ad_btn_radio_holo_light</item> 
        </style> 
    

    瞭解更多:Android ActionBar

    相關問題