2013-12-16 143 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);