Tabhost-在Android选项卡中设置徽章位置

时间:2014-09-29 11:44:03

标签: android tabs notifications android-view tabwidget

我对徽章的概念不熟悉。在我的应用程序中,我想在一个选项卡上显示徽章。为此,我使用了android-viewbadger.jar文件Android ViewBadger 它有4个选项卡正常工作,

    TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
    badge1 = new BadgeView(this, tabs, 1);
    badge1.setText("155");
    badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_RIGHT);
    badge1.toggle();

enter image description here

当我在这里添加一个标签时,它将看起来像这样

enter image description here

我已经使用这些徽章属性

    badge1.setPadding(left, top, right, bottom);
    badge1.setTextSize(15);
    badge1.setBadgeMargin(5,5);
    badge1.setWidth(10);

2 个答案:

答案 0 :(得分:1)

在TabWidget上设置徽章只会在drawable和TabWidget边界之间的空间中显示徽章,因此添加更多选项卡将压缩徽章。而是使用setIndicator(String,Drawable),试试这个:

    ImageView iv = new ImageView(this);
    iv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    iv.setImageResource(R.drawable.whoseinterested);
    whosespec.setIndicator(iv);
    Intent whoseIntent = new Intent(this, BlankActivity.class);
    whosespec.setContent(whoseIntent);

    tabHost.addTab(whosespec);

    badge1 = new BadgeView(this, iv);
    badge1.setText("155");
    badge1.setTextSize(15);
    badge1.setBadgeBackgroundColor(Color.BLACK);
    badge1.setTextColor(Color.WHITE);
    badge1.toggle();

截图: screen

您可以在屏幕截图中清楚地看到带徽章的标签中的图像向中心移动。如果图像与其标签边界之间没有空格,则无法正确显示。

来源:自我测试。

答案 1 :(得分:1)

您可以在imageview中选项卡的视图中设置徽章

试试这个

    TabWidget tabsw = (TabWidget) rootView.findViewById(android.R.id.tabs);
        ViewGroup viewgroup = (ViewGroup) tabsw.getChildAt(0);
        viewgroup.getChildCount();

        for (int i = 0; i < viewgroup.getChildCount(); i++) {
            if (viewgroup.getChildAt(i) instanceof ImageView) {
                ImageView new_name = (ImageView) viewgroup.getChildAt(i);
                badge7 = new BadgeView(getActivity(),new_name);
                badge7.setText("9");
                badge7.setTextSize(9);
                badge7.setBadgeMargin(0,0);
                badge7.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
                badge7.toggle();

            }
        }