У меня есть 50 фрагментов, в каждом из которых не менее 20 компонентов. Я испытываю задержку (отставание) при переключении вкладок, хотя я использовал это утверждение:
viewpager.setOfscreenPageLimit(2)
но это не сработало. Я попытался инициализировать вкладку с фрагментами в другом потоке (кроме потока пользовательского интерфейса), например так:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
// Add Fragments
// Here there are 50 fragments, but I added just 2
//fragments for simplicity
//region Phase Five
adapter.addFragment(new PhaseFiveTestTwoFragment(), "");
adapter.addFragment(new LessonOneFragment(), "");
//endregion
viewPager.setOffscreenPageLimit(2);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
}, 100);
Но у меня все еще было отставание при переключении вкладок.
Это пример того, сколько компонентов у меня есть:
Любая помощь будет оценена.




Не используйте Handler для этого. Вам действительно не нужно настраивать задержку для этого
Используйте это как свой ViewPagerAdapter (это просто стандартная структура адаптера ViewPager):
private class ViewPagerAdapter extends FragmentPagerAdapter {
private final List < Fragment > mFragList = new ArrayList < > ();
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragList.get(position);
}
@Override
public int getCount() {
return mFragList.size();
}
public void addFragmentI(Fragment fragment) {
mFragList.add(fragment);
}
private void removeFragmentI(Collection < Fragment > fragment) {
mFragList.removeAll(fragment);
}
}А для настройки адаптера используйте что-то вроде этого:
Fragment[] frags = {
new Fragment1(),
new Fragment2(),
new Fragment3(),
new Fragment4(),
new Fragment5()
};
for (int i = 0; i < tabCount; i++) {
pagerAdapter.addFragmentI(frags[i]);
}
mViewPager.setAdapter(pagerAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);Это должно работать без сбоев. Держите свои фрагменты также легкими
Я реализовал ваше решение в первую очередь, но оно не сработало.
хорошо, так что убедитесь, что проблема в вашем макете. Например, что вы используете для градиента в элементе «Фон»?
потому что Textviews в порядке, однако вы их используете. Вы можете загрузить свой товар xml?
Используйте трассировка метода и определите, в чем именно заключается ваша проблема.