Я использую TabPageIndicator из ViewPagerIndicator lib с ViewPager для отображения 6 фрагментов. Предположим, что я на первой странице, если я нажму 6-ю вкладку, я увижу, что все мои страницы прокручиваются. Можно ли отключить эту анимацию? Может быть, я могу как-то отключить его в ViewPager?
Вот код адаптера:
public class TabBarFragmentPagerAdapter extends FragmentPagerAdapter implements IconPagerAdapter { private final List<Fragment> items; private static final String[] TITLES = new String[] { "Home", "Profile", "Explore", "Contacts", "Beacon" }; private static final int[] ICONS = new int[] { R.drawable.icon_tabbar_home_bg, R.drawable.icon_tabbar_profile_bg, R.drawable.icon_tabbar_explore_bg, R.drawable.icon_tabbar_contacts_bg, R.drawable.icon_tabbar_beacon_bg }; public TabBarFragmentPagerAdapter(FragmentManager fm, List<Fragment> items) { super(fm); this.items = items; } @Override public Fragment getItem(int position) { return items.get(position); } @Override public int getIconResId(int index) { return ICONS[index]; } @Override public CharSequence getPageTitle(int position) { return TITLES[position]; } @Override public int getCount() { return items.size(); } }
Другой вариант – переопределить setCurrentItem(int i)
в классе ViewPager
подклассифицируя ViewPager
следующим образом:
@Override public void setCurrentItem(int item) { super.setCurrentItem(item,false); }
Я исследовал код TabPageIndicator, и я обнаружил, что это невозможно сейчас. См. Код mTabClickListener:
private final OnClickListener mTabClickListener = new OnClickListener() { public void onClick(View view) { TabView tabView = (TabView)view; final int oldSelected = mViewPager.getCurrentItem(); final int newSelected = tabView.getIndex(); mViewPager.setCurrentItem(newSelected); if (oldSelected == newSelected && mTabReselectedListener != null) { mTabReselectedListener.onTabReselected(newSelected); } } };
Чтобы поддержать эту функцию, мы должны добавить второй параметр в setCurrentItem. Что-то вроде этого:
mViewPager.setCurrentItem(newSelected, smoothScrollEnabled);