如何在 Tablayout 中显示通知计数器?
How to show Notification Counter in a Tablayout?
我看到了 但它并没有帮助我理解我必须做什么。我了解如何从查询中增加计数器值的概念。
但是我不明白我应该使用什么。我应该使用 Notification notification;
还是 BadgeViewer badgeViewer;
?我更喜欢一种不需要导入库的方式。
为您的标签制作布局资源。它应该包括代表您的 "badge" 的内容(如果您只想显示一个数字,一个简单的 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(...);
user material 设计而不是 apcompact 设计,这是将徽章添加到选项卡的一行代码,如 whatsapp
tabLayout.getTabAt(0).getOrCreateBadge().setNumber(3);//tab#1
所以这会将徽章添加到您想要的选项卡
to remove the badge on tab selected
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) {}
});
我看到了
但是我不明白我应该使用什么。我应该使用 Notification notification;
还是 BadgeViewer badgeViewer;
?我更喜欢一种不需要导入库的方式。
为您的标签制作布局资源。它应该包括代表您的 "badge" 的内容(如果您只想显示一个数字,一个简单的 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(...);
user material 设计而不是 apcompact 设计,这是将徽章添加到选项卡的一行代码,如 whatsapp
tabLayout.getTabAt(0).getOrCreateBadge().setNumber(3);//tab#1
所以这会将徽章添加到您想要的选项卡
to remove the badge on tab selected
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) {}
});