我可以将徽章编号放在Button
等等,但是有没有关于如何在视图寻呼机上放置徽章编号的示例?对于按钮我正在使用适当的背景资源创建一个xml等,但我无法找到任何方法将其放在PagerSlidingTabStrip
上。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:background="@drawable/badge"
android:gravity="center"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text="2"
android:textColor="@color/WHITE"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="gone" />
我首先将值设置为gone
并在需要时显示。有没有办法用view pager做到这一点?
答案 0 :(得分:7)
您应该对PagerSlidingTabStrip
进行一些小修改。
将这段代码插入PagerSlidingTabStrip
类:
public LinearLayout getTabsContainer(){
return tabsContainer;
}
现在您可以通过以下方式访问标签视图:
View currentTabView = pagerSlidingTabStrip.getTabsContainer().getChildAt(currentPosition);
您可以轻松使用 https://github.com/jgilfelt/android-viewbadger ,请按照以下示例操作:
在MainActivity中:
public static View currentTab;
private PagerSlidingTabStrip pagerSlidingTabStrip;
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
currentTab = pagerSlidingTabStrip.getTabsContainer().getChildAt(0);
return firstFragment;
case 1:
currentTab = pagerSlidingTabStrip.getTabsContainer().getChildAt(1);
return secondFragment;
case 2:
currentTab = pagerSlidingTabStrip.getTabsContainer().getChildAt(2);
return thirdFragment;
}
return null;
}
在片段中:
BadgeView badge = new BadgeView(getActivity(), MainActivity.currentTab);
badge.setText("1"); //Whatever value you should add
badge.show();
答案 1 :(得分:2)
Renan的解决方案是正确的,但如果你的xml中的app:pstsShouldExpand =“true”,它会删除标签图标。解决方案是更改PagerSlidingTabStrip.java中的“expandedTabLayoutParams”参数,如下所示:
expandedTabLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);