2013-12-16 2 views
0

Я могу указать номера значков на Button и т. Д., Но есть ли пример того, как номер значка можно разместить на пейджере представления? Для кнопки я создаю 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 Можете ли вы рассказать, как отредактировать этот файл. Я использую андроид-студию, и поскольку файл внутри jar, я не могу редактировать файл и помещать в него эту функцию. – satyapol

+1

@satyapol Я не уверен в студии Android. Если ничего не работает, вы можете скопировать/вставить код для PagerSlidingTabStrip.java в новый класс в своем собственном пакете и внести в него изменения. –

2

решение Ренана является правильным, но он удаляет значок вкладки, если приложение: pstsShouldExpand = "true" в вашем xml. Решение меняется "expandedTabLayoutParams" параметров в PagerSlidingTabStrip.java как:

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

Смежные вопросы