【问题标题】:Tabhost- set the badge position in tabs AndroidTabhost- 在标签页中设置徽章位置 Android
【发布时间】:2014-10-27 07:04:16
【问题描述】:

我对徽章的概念不熟悉。在我的应用程序中,我想在一个选项卡上显示徽章。为此,我使用了 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();

当我在这里再添加一个标签时,它会是这样的

我已经使用了这些徽章属性

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

【问题讨论】:

标签: android tabs notifications android-view tabwidget


【解决方案1】:

在 TabWidget 上设置徽章只会在可绘制对象和 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();

截图:

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

来源:自己测试过。

【讨论】:

  • 这是一个完美的答案,就像一个魅力 @berserk 非常感谢你
  • @AliAshiq 很高兴它有帮助:)
【解决方案2】:

在 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();

            }
        }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多