2013-08-02 86 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的回答)也显示了如何设置不同的背景资源。

相关问题