如何在Tablayout中显示通知计数器?

时间:2017-01-08 06:31:56

标签: java android android-tablayout badge

我看到了this stack overflow post,但它并没有帮助我理解我必须做的事情。我理解如何从查询中增加计数器值的概念。

但我不明白我应该使用什么。我应该使用Notification notification;还是BadgeViewer badgeViewer;?我更喜欢一种不必导入图书馆的方式。

2 个答案:

答案 0 :(得分:2)

为标签创建布局资源。它应该包含代表你的“徽章”的东西(如果你只是想显示一个数字,一个简单的TextView将起作用)。创建选项卡时,请指定此自定义布局。

private TabLayout tabLayout;

// in onCreate()
tabLayout = (TabLayout) findViewById(R.id.tabs);
for (int i = 0; i < NUM_TABS; i++) {
    TabLayout.Tab tab = tabLayout.newTab()
            .setText("tab name")
            .setCustomView(R.layout.custom_tab);
    tabLayout.addTab(tab);
}

请注意,要使setText()正常工作,您的布局需要TextView android:id="@android:id/text1"(这不是徽章文字,这是标签名称)。

如果您要更新标签的徽章,可以获取Tab并询问其视图,找到徽章并设置其文字。

TabLayout.Tab tab = tabLayout.getTabAt(3); // fourth tab
View tabView = tab.getCustomView();
TextView badgeText = (TextView) tabView.findViewById(R.id.badge_text);
badgeText.setText(...);

答案 1 :(得分:1)

用户材料设计而不是紧凑的设计,这是将徽章添加到像whatsapp这样的标签的一行代码

  tabLayout.getTabAt(0).getOrCreateBadge().setNumber(3);//tab#1

所以这会为您想要的标签添加徽章

<块引用>

删除所选标签上的徽章

            viewPager.addOnPageChangeListener(
            new ViewPager.OnPageChangeListener() {

                @Override
                public void onPageScrolled(
                        int position, float positionOffset, int positionOffsetPixels) {}

                @Override
                public void onPageSelected(int position) {

              

                    if (position == 0) {
                        tabLayout.getTabAt(0).removeBadge();
                    }
                    if (position == 2) {
                   

                        
                        tabLayout.getTabAt(2 ).removeBadge();
                    }
                }

                @Override
                public void onPageScrollStateChanged(int state) {}
            });