PagerSlidingTabStrip:ViewPager徽章编号

KVI*_*ISH 0 android android-viewpager

我可以在Buttons等上放置徽章编号,但有没有关于如何在视图寻呼机上放置徽章编号的示例?对于按钮我正在创建一个具有适当背景资源的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" />
Run Code Online (Sandbox Code Playgroud)

我将值设置为gonefirst并在需要时显示.有没有办法用视图寻呼机做到这一点?

Ren*_*vol 7

你应该做一个小修改PagerSlidingTabStrip.

将这段代码插入到PagerSlidingTabStrip类中:

public LinearLayout getTabsContainer(){
return tabsContainer;
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过以下方式访问选项卡视图:

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;
}
Run Code Online (Sandbox Code Playgroud)

在片段中:

BadgeView badge = new BadgeView(getActivity(), MainActivity.currentTab);
badge.setText("1"); //Whatever value you should add
badge.show();
Run Code Online (Sandbox Code Playgroud)