2011-03-04 66 views
5

我使用的TabLayout,我有我使用的标签的自定义图像,但对于我的生活,我无法弄清楚如何改变颜色,甚至在标签和图像之间的分隔线和标签内容。我试图使用setDividerDrawable(),但在设置选项卡内容之前调用它时会崩溃,而在我调用它之后什么都不做。如果我能把它变成黑色就足够了,但到目前为止没有任何工作。感谢您的任何指导。如何更改Android中TabWidget分隔线的颜色和/或可绘制?

回答

9

您必须这样做: tabHost.getTabWidget()。setDividerDrawable(R.drawable.tab_divider);

其中R.drawable.tab_divider是资源目录中的映像。

但是,关键是你必须这样做,然后你已经添加到标签主机的任何标签。

我的标签初始化代码如下所示:

private void initializeTabs(int curTab) { 
    this.tabHost = getTabHost(); 
    tabHost.clearAllTabs(); 

    TabSpec ts1, ts2, ts3, ts4, ts5; 
    // tab separator 
    tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

    ts1 = this.setupTab(new TextView(this), tabHost, R.drawable.browse_tab_normal, 
      mResources.getString(R.string.Browse)); 

    ts2 = this.setupTab(new TextView(this), tabHost, R.drawable.search_tab_normal, 
      mResources.getString(R.string.Search)); 

    ts3 = this.setupTab(new TextView(this), tabHost, R.drawable.postad_tab_normal, 
      mResources.getString(R.string.Post)); 

    ts4 = this.setupTab(new TextView(this), tabHost, R.drawable.watchlist_tab_normal, 
      mResources.getString(R.string.WatchList)); 

    ts5 = this.setupTab(new TextView(this), tabHost, R.drawable.managead_tab_normal, 
      mResources.getString(R.string.Login)); 

    // intents 
    ts1.setContent(new Intent().setClass(this, BrowseTabActivity.class)); 
    ts2.setContent(new Intent().setClass(this, SearchTabActivity.class)); 
    ts3.setContent(new Intent().setClass(this, PostAdTabActivity.class)); 
    ts4.setContent(new Intent().setClass(this, WatchlistTabActivity.class)); 
    ts5.setContent(new Intent().setClass(this, LoginTabActivity.class)); 

    tabHost.addTab(ts1); 
    tabHost.addTab(ts2); 
    tabHost.addTab(ts3); 
    tabHost.addTab(ts4); 
    tabHost.addTab(ts5); 

...

+0

答案是好的,但我怎样才能用相同的代码设置颜色,而不是图像。谢谢! – benoffi7 2014-01-25 16:18:40

0

更好的方式来定义一个分频器使如果来自您的XML标记:

<TabWidget 
    android:layout_width="match_parent" 
    android:showDividers="middle" 
    android:divider="@drawable/design_tab_divider"> 
</TabWidget> 

所以,你可以从标记中定义一个drawable。 请注意,您必须使用android:divider以及android:showDividers="middle"将标签之间的分隔符。 更多的阅读规格,并注意从LinearLayout继承的属性 - docs in google

相关问题