PagerSlidingTabStrip:ViewPager徽章编号

时间:2013-12-16 22:20:01

标签: android android-viewpager

我可以将徽章编号放在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做到这一点?

2 个答案:

答案 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);