1

tabWidget 中的分隔符工作正常,但是当标签小部件的背景设置为

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

问题是尽管我使用了设置背景后如何在选项卡小部件中设置分隔符

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

is 不适用于多个选项卡。

4

1 回答 1

14

分隔线未显示可能有多种原因...

1. setDividerDrawable() 必须在将标签添加到 tabHost 之前使用。

2. 默认情况下,每个制表符的视图都设置了-2(左)、-2(右)边距...

默认情况下,系统为 tabWidget 背景使用 9-patch 可绘制对象,左侧和右侧至少有 2 个像素保持透明(或半透明的阴影效果)。

我的自定义标签示例

1. 演示


android 2.3.3 中的原始系统 9-path drawable (selected)在此处输入图像描述

2. 用于选项卡小部件背景的库存 9 路径可绘制对象。您可以使用这些进行实验


如果您不想使用 9-path drawables... 您可以将边距设置为 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);
    }
于 2012-02-07T06:09:04.393 回答