当从代码设置 tabwidget 背景时,tabwidget 中的 tabwidget divder 消失?

发布于 2024-12-20 22:30:36 字数 326 浏览 3 评论 0原文

tabWidget 中的分隔线工作正常,但是当设置选项卡小部件的背景时,

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

问题是如何在设置背景后在选项卡小部件中设置分隔线 虽然我使用的

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

是不适用于多个选项卡。

divider in tabWidget is working fine but when background of tab widget is set like

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

problem is how to set divider in tab widget after setting background
though i used

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

is does not work for multiple tab.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我只土不豪 2024-12-27 22:30:36

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

1.在将选项卡添加到 tabHost 之前,必须使用 setDividerDrawable() 才能工作。

2.默认情况下,每个 tabindicator 的视图设置有 -2(左)、-2(右)边距...

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

我的自定义选项卡示例

1.演示


android 2.3.3 中的原始系统 9 路径可绘制(已选择)在此处输入图像描述

2.用于选项卡小部件背景的库存 9 路径绘图。您可以使用它们进行实验


如果您不想使用 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);
    }

There may be multiple reasons for the dividers not showing up...

1. setDividerDrawable() must be used before you add the tabs to the tabHost to work.

2. By default there's are -2(left), -2(right) margins set to each tabindicator's View...

By default the system is using 9-patch drawables for tabWidget backgrounds with at least 2 pixels left transparent(or semi-transparent for shadow-effect) to the left and the right side.

my custom tab example

1. demonstration


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

2. Stock 9-path drawables for tab widget background. You can use these for experimenting


If you don't wan't to use 9-path drawables...
you can set the margins to 0 to prevent the tab views overlapping your divider. Here's the code:

    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);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文