Как изменить цвет и / или нарисовать разделитель TabWidget в Android? - PullRequest
5 голосов
/ 04 марта 2011

Я использую TabLayout, и у меня есть пользовательские изображения для вкладок, которые я использую, но я не могу понять, как изменить цвет или даже изображение разделителя между вкладками и содержание вкладки. Я пытался использовать setDividerDrawable (), но он вылетает, когда я вызываю его перед настройкой содержимого вкладки, и просто ничего не делает, когда я вызываю его после. Если бы я мог просто сделать его черным, этого было бы достаточно, но пока ничего не получалось. Спасибо за любые рекомендации.

Ответы [ 2 ]

9 голосов
/ 06 октября 2011

Вы должны сделать это: . 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 голосов
/ 12 октября 2015

Лучший способ определить разделитель - создать if из вашей разметки XML:

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

Итак, вы можете определить рисование только из разметки. Помните, что вы должны использовать android:divider вместе с android:showDividers="middle" для размещения разделителей между вкладками. Подробнее читайте в спецификации и обратите внимание на свойства, унаследованные от LinearLayout - документы в google

...