我有一个 ViewPager2 和一个 FragmentStateAdapter ,并且屏幕外限制为1:
viewPager.setAdapter(new MyFragmentStateAdapter(this));
viewPager.setOffscreenPageLimit(1);
public class MyFragmentStateAdapter extends FragmentStateAdapter {
MyFragmentStateAdapter(@NonNull Fragment fragment) {
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position) {
return new ItemFragment(position);
}
@Override
public int getItemCount() {
return 15;
}
}
发生了什么事
我发现了什么
为什么这是个问题:
问题:
答案 0 :(得分:1)
我的解决方案:
view_pager.registerOnPageChangeCallback(object :
ViewPager2.OnPageChangeCallback() {
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
when (state) {
SCROLL_STATE_IDLE -> {
view_pager.offscreenPageLimit = 1
}
SCROLL_STATE_DRAGGING -> {
view_pager.offscreenPageLimit = OFFSCREEN_PAGE_LIMIT_DEFAULT
}
}
}
})
view_pager.offscreenPageLimit = 1
设置 offscreenPageLimit = OFFSCREEN_PAGE_LIMIT_DEFAULT
当 SCROLL_STATE_DRAGGING
防止在滑动手势上创建下一个片段。并在滑动手势设置 offscreenPageLimit = 1
后导致创建下一个片段