Я использую PagerSlidingTabStrip, чтобы иметь ViewPager
с вкладками в макете Android.
Мой пользовательский адаптер ViewPager
выглядит следующим образом:
private static class SlidingPagerAdapter extends PagerAdapter implements IconTabProvider {
private final List<Tab> mItems;
private final LayoutInflater mInflator;
public SlidingPagerAdapter(Context context, List<Tab> tabs) {
mItems = tabs;
mInflator = LayoutInflater.from(context);
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public boolean isViewFromObject(View v, Object obj) {
return v == (View) obj;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Tab data = mItems.get(position);
View child = mInflator.inflate(data.mLayoutResource, container, false);
container.addView((View) child, 0);
return child;
}
@Override
public int getPageIconResId(int position) {
return mItems.get(position).mIconResource;
}
}
Проблема возникает, когда я устанавливаю PageTransformer
в ViewPager
. В качестве теста я использовал ZoomOutPageTransformer, представленный в документации по Android.
Когда дочернее представление из ViewPager загружается впервые, все работает нормально. Я могу щелкать элементы, и представления обновляются. Но после первой прокрутки ViewPager дочерние представления просто перестают правильно отображаться. Если я нажимаю на элемент, я чувствую тактильную обратную связь и звук щелчка, но вид остается в прежнем состоянии.
Я пытался аннулировать представление каждый раз, когда в ViewPager происходят изменения, но это не помогло.
Существуют подобные проблемы при использовании ListView внутри ViewPager, поэтому я попытался установить представления, которые находятся вне поля зрения, как GONE, но это тоже не сработало.