Как изменить цвет и / или рисование разделителя TabWidget в Android?



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

114   2  

2 ответов:

Ты должен это сделать.: tabHost.getTabWidget().setDividerDrawable (Р.tab_divider);

Где R. рисуемый.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);

...

Лучший способ определить разделитель-сделать if из вашей 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 в google

    Ничего не найдено.

Добавить ответ:
Отменить.