我正在使用 TabLayout 并且我为正在使用的选项卡提供了自定义图像,但是对于我的生活,我无法弄清楚如何更改选项卡和选项卡内容之间的分隔线的颜色甚至图像. 我曾尝试使用 setDividerDrawable(),但是当我在设置选项卡内容之前调用它时它会崩溃,并且在我之后调用它时什么也不做。如果我能把它变成黑色就足够了,但到目前为止还没有任何效果。感谢您的任何指导。
问问题
4562 次
2 回答
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);
...
于 2011-10-05T22:54:37.960 回答
0
定义分隔符的更好方法是从您的 XML 标记中创建 if:
<TabWidget
android:layout_width="match_parent"
android:showDividers="middle"
android:divider="@drawable/design_tab_divider">
</TabWidget>
因此,您可以仅从标记中定义可绘制对象。请注意,您必须使用 android:divider
withandroid:showDividers="middle"
来在选项卡之间放置分隔符。有关更多信息,请阅读规范并注意从 LinearLayout 继承的属性 - google 文档
于 2015-10-12T12:53:32.550 回答