I'm using a ViewPager2 in my Android app to let the user scroll left and right through (currently) 2 pages. It seems fine, except for one little detail.
I'm using setOffscreenPageLimit(2) because I want both pages to be ready for scrolling straight away. However, it doesn't seem to do anything. When I scroll from page 1 to page 2 for the first time, the second page's layout doesn't appear until it's fully selected (i.e. the transition animation is finished). This looks quite jarring, and defeats the point of smooth scrolling with a ViewPager2 at all.
After page 2 loads for the first time, scrolling back and forth works properly with both pages being retained allowing a smooth transition.
Can anyone replicate this? This used to work just fine with ViewPager.
Here's how I set up my ViewPager2:
_viewPager2FragmentHolder = getActivity().findViewById(R.id.viewPager2TargetFragmentHolder);
_viewPager2FragmentHolder.setOffscreenPageLimit(2);
_viewPager2FragmentHolder.setAdapter(new TargetFragmentStateAdapter(this));
...and here's my adapter class:
public class TargetFragmentStateAdapter extends FragmentStateAdapter
{
public TargetFragmentStateAdapter(@NonNull Fragment fragment)
{
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position)
{
switch (position)
{
case 0:
return new TargetCoordinatesFragment();
case 1:
return new TargetDirectionsFragment();
default:
return new Fragment();
}
}
@Override
public int getItemCount()
{
return 2;
}
}