2013-12-16 103 views
0

我可以在Button s等位置上放置徽章号码,但有没有徽章号码可以放在视图寻呼机上的示例?对于按钮,我使用正确的背景资源创建了一个xml,但我无法找到任何方法将它放在PagerSlidingTabStrip上。PagerSlidingTabStrip:ViewPager徽章号码

  <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,并在需要时显示。有没有办法与视图传呼机做到这一点?

回答

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(); 
+0

就试了一下。它添加了徽章,但删除了“pagerSlidingTabStrip”形式的选项卡图标。任何想法为什么发生这种情况? –

+0

@AdeelAhmad你能告诉我如何编辑这个文件吗?我正在使用android工作室,因为文件在jar中我无法编辑文件并将其放入它 – satyapol

+1

@satyapol我不确定关于android studio。如果没有任何工作,你可以将PagerSlidingTabStrip.java的代码复制/粘贴到你自己包中的新类中,并对其进行更改。 –

2

赫南解决方案是正确的,但它删除,如果应用程序选项卡图标:pstsShouldExpand =“true”在你的XML。该解决方案将 “expandedTabLayoutParams” 参数PagerSlidingTabStrip.java如下所示:

expandedTabLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);