ViewPager предварительно загружает фрагменты.
Но с pageWidth = 0,5 (2 фрагмента на экран), я думаю, он загружает слишком много просмотров перед текущей позицией ...
У меня есть pageLimit=1
и pageWidth=0.5
.
Это должно быть нормально для предварительной загрузки LEFT1 и LEFT2, но почему LEFT3?
LEFT3 не на следующем левом экране ...
Я пытался понять ViewPager.java из поддержки v4:
https://android.googlesource.com/platform/frameworks/support/+/support-library-27.1.1/core-ui/src/main/java/android/support/v4/view/ViewPager.java#1155
строка 1155, там написано
// Заполнить в 3 раза доступной шириной или до количества вне экрана
// страницы запрашиваются в любую сторону, в зависимости от того, что больше.
Но для нескольких фрагментов на экран загружается больше, чем до текущей и после текущей позиции.
С примером проекта Google https://github.com/googlesamples/android-SlidingTabsBasic/
добавление
protected void onCreate(Bundle savedInstanceState) {
[...]
mViewPager.setCurrentItem(25);
@Override
public float getPageWidth(int position) {
// 2 fragments per screen
return .5f;
}
@Override
public int getCount() {
// 50 fragments
return 50;
}
public Fragment getItem(int position) {
[...]
Log.d("debugpageviewer", "position="+position);
}
И загружает 7 фрагментов (3 перед текущей позицией). Чем меньше ширина страницы, тем больше фрагментов загружается раньше.
Итак, это ошибка или я что-то упустил?