2011-03-04 39 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

相關問題