2013-08-02 84 views
0

我的應用程序中有以下ActionBar選項卡。我想知道什麼是最好的方式來改變周圍的顏色來匹配我的應用程序。以編程方式更改ActionBar選項卡顏色

enter image description here

  1. 每個標籤具有用於內容的不同背景。如何爲每個標籤添加 單獨的背景顏色?
  2. 如何將淺藍色的條形顏色更改爲白色以使其具有3D 的外觀?

我看到下面的代碼:

ActionBar ab = getActionBar(); 
//ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff"))); 

但該行改變顏色爲所有選項卡只是一種顏色。

在我的應用程序的標籤代碼:

ActionBar ab = getActionBar(); 
     //ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff"))); not changing the tab color 
     //ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff"))); 
     ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     Tab tab = ab.newTab() 
       .setText("TY1") 
       .setTabListener( 
         new MyTabListener(this, TY1.class.getName())); 
     ab.addTab(tab); 

     tab = ab.newTab() 
       .setText("TY2") 
       .setTabListener( 
         new MyTabListener(this, TY2.class.getName())); 
     ab.addTab(tab); 

     tab = ab.newTab() 
       .setText("ty3") 
       .setTabListener( 
         new MyTabListener(this, TY3.class.getName())); 
     ab.addTab(tab); 

任何和所有幫助表示讚賞。如果有人指出我正確的方向,我也可以使用XML。

回答

2

您可以爲每個選項卡設置自定義視圖。爲選項卡創建新的佈局資源(它可以只是一個TextView)。保持其背景爲空,併爲選擇指示器繪製九個補丁。獲得LayoutInflater使用

LayoutInflater inflater = getSystemService(LAYOUT_INFLATER_SERVICE); 

然後爲每個標籤,你可以這樣做:

Tab tab = ab.newTab() 
     .setText("TY1") 
     .setTabListener(new MyTabListener(this, TY1.class.getName())); 
View tabView = inflater.inflate(R.layout.my_tab_layout, null); 
tabView.setBackgroundColor(...); // set custom color 
tab.setCustomView(tabView); 
ab.addTab(tab); 
+0

它對我的代碼示例如何工作?假設第二個選項卡的第一個選項卡藍色背景和第三個選項卡上的黃色背景的綠色背景? – Si8

+0

爲每個選項卡更改傳遞給'tabView.setBackgroundColor()'的參數。 – Karakuri

+0

對不起/碰壞這個答案,但佈局xml文件的外觀如何?我嘗試了這個解決方案,但我不知道如何製作九個可修補的繪圖。 – Razgriz

1

您可以通過定義自定義樣式更改ActionBar的背景顏色,如:

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

去:http://jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=holo&theme=light&actionbarstyle=solid&texture=0&hairline=0&backColor=E4E4E4%2C100&secondaryColor=D6D6D6%2C100&tabColor=33B5E5%2C100&tertiaryColor=F2F2F2%2C100&accentColor=33B5E5%2C100&cabBackColor=FFFFFF%2C100&cabHighlightColor=33B5E5%2C100

,並創建你的動作欄然後下載它。下載它之後,您可以在您的項目中使用它。

1

對於那些尋找更詳細的例子代碼就如何創建自定義選項卡視圖,然後更改標籤的格式,你可以在https://stackoverflow.com/a/28389366/3268329看到我的答案。這個問題與選擇特定選項卡時更改選項卡文本顏色有關,但您可以輕鬆修改代碼來改變背景,或者執行任何您需要的操作。

https://stackoverflow.com/a/18491600/3268329(S.Thiongane的回答)也顯示瞭如何設置不同的背景資源。

相關問題