Разделитель tabwidget в tabwidget исчезнет, ​​если в коде установлен фон tabwidget? - PullRequest
1 голос
/ 14 декабря 2011

разделитель в tabWidget работает нормально, но когда фон виджета со вкладками установлен как

tabHost.getTabWidget().getChildTabViewAt(tabId).setBackgroundResource(R.drawable.tab_indicator);

проблема в том, как установить разделитель в виджете вкладок после установки фона, хотя я использовал

tabhost.getTabWidget().setDividerDrawable(R.drawable.tab_widget_divider);

is не работает для нескольких вкладок.

1 Ответ

14 голосов
/ 07 февраля 2012

Может быть несколько причин, по которым разделители не отображаются ...

1. setDividerDrawable () необходимо использовать перед добавлением вкладок в tabHost для работы.

2. По умолчанию для каждого представления табиндикатора установлены поля -2 (слева) и -2 (справа) ...

По умолчанию система использует 9-патчовые рисунки для фонов tabWidget с прозрачностью не менее 2 пикселей (или полупрозрачный для эффекта тени) слева и справа.

my custom tab example

1. демонстрация


original system 9-path drawable in android 2.3.3 (selected)enter image description here

2. Stock 9-pathable drawables для фона виджета со вкладками. Вы можете использовать их для экспериментов


Если вы не хотите использовать рисование с 9 путями ... вы можете установить поля равными 0, чтобы вкладки не пересекались с вашим разделителем. Вот код:

    View v;
    int count = tw.getTabCount();
    for (int i = 0; i < count; i++) {
        v = tw.getChildTabViewAt(i);
        v.setBackgroundResource(R.drawable.bg_tab);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        params.setMargins(0, 0, 0, 0);
    }
...