【问题标题】:How to show Notification Counter in a Tablayout?如何在 Tablayout 中显示通知计数器?
【发布时间】:2017-05-22 15:48:47
【问题描述】:

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

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

【问题讨论】:

  • 帖子接受的答案建议为选项卡设置自定义布局,而不是使用默认布局。你到底在问什么?
  • 我的应用由 5 个标签组成。第 4 个选项卡是一个片段,其中包含显示通知的列表视图。当用户打开应用程序时,我想在标签图标旁边显示一个红色计数器以显示未读通知的数量,但我不确定如何执行此操作。 @Karakuri
  • 您可以创建自己的布局并将其设置为选项卡的视图,因此它将显示您的布局而不是普通文本。您还可以使用getTabAt()getCustomView() 获取该选项卡的视图并进行修改。
  • 你能提供代码并给我一个答案吗? @Karakuri

标签: java android android-tablayout badge


【解决方案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) {}
            });

【讨论】:

  • 为我工作:)
【解决方案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() 正常工作,您的布局需要TextViewandroid: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(...);

【讨论】:

  • 我会尽快尝试并告诉你进展如何。
猜你喜欢
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多