Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中更改TabWidget分隔器的颜色和/或可绘制性?_Android_Xml_Drawable_Tabwidget_Divider - Fatal编程技术网

如何在Android中更改TabWidget分隔器的颜色和/或可绘制性?

如何在Android中更改TabWidget分隔器的颜色和/或可绘制性?,android,xml,drawable,tabwidget,divider,Android,Xml,Drawable,Tabwidget,Divider,我正在使用一个TableLayout,我为我正在使用的选项卡定制了图像,但就我的一生而言,我不知道如何更改选项卡和选项卡内容之间分隔符的颜色甚至图像。我曾尝试使用setDividerDrawable(),但当我在设置选项卡内容之前调用它时,它崩溃了,而当我在设置选项卡内容之后调用它时,它什么也不做。如果我能让它变成黑色,那就足够了,但到目前为止还没有任何效果。感谢您的指导。您必须这样做: tabHost.getTabWidget().setDividerDrawable(R.drawable.t

我正在使用一个TableLayout,我为我正在使用的选项卡定制了图像,但就我的一生而言,我不知道如何更改选项卡和选项卡内容之间分隔符的颜色甚至图像。我曾尝试使用setDividerDrawable(),但当我在设置选项卡内容之前调用它时,它崩溃了,而当我在设置选项卡内容之后调用它时,它什么也不做。如果我能让它变成黑色,那就足够了,但到目前为止还没有任何效果。感谢您的指导。

您必须这样做: 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);

定义分隔符的更好方法是从XML标记中生成if:

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

因此,您可以仅从标记定义可绘制的。 请注意,必须使用
android:dividers
android:showDividers=“middle”
将分隔符放置在选项卡之间。
有关详细信息,请阅读规范并注意从LinearLayout继承的属性-

答案是可以的,但如何使用相同的代码设置颜色而不是图像。谢谢