5

TabLayoutを使用していて、使用しているタブのカスタム画像がありますが、私の人生では、タブとタブコンテンツの間の仕切りの色や画像を変更する方法がわかりません。 。setDividerDrawable()を使おうとしましたが、タブの内容を設定する前に呼び出すとクラッシュし、後で呼び出すと何も起こりません。黒にすることができればそれで十分ですが、今のところ何も機能していません。ガイダンスをありがとう。

4

2 に答える 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に一緒に使用する必要があること に注意してください。android:showDividers="middle"詳細については、仕様を読み、LinearLayoutから継承されたプロパティに注意してください-Googleのドキュメント

于 2015-10-12T12:53:32.550 に答える