Инициализация представлений Viewpager при перетаскивании - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть пейджер для выбора аватара.этот пейджер отображает по 3 страницы за раз, однако при перетаскивании пейджера на несколько страниц входящие виды не инициализируются, пока я не перестану перетаскивать.как это исправить?

Вот как я настраиваю отступ для отображения нескольких страниц

setClipToPadding(false); // must be false so left and right pages will be always visible.
float visiblePages = 3;
post(() -> { // set padding to get visible pages.
    int padding = Math.round(getWidth() * (1f - 1f / visiblePages) / 2f);
    int paddingLeft = Math.max(getPaddingLeft(), padding);
    int paddingRight = Math.max(getPaddingRight(), padding);
    setPadding(paddingLeft, getPaddingTop(), paddingRight, getPaddingBottom());
});

Мне нужно вызвать метод, чтобы вызвать инициализацию представлений при перетаскивании, но я неНе знаю, что вызвать.

Я пытался сделать это с помощью PageTransformer и вызвать populate с помощью отражения, но это не сработало

@Override
public void transformPage(@NonNull View page, float position) {
    float distance = Math.abs(position - (visiblePages - 1f) / 2f); // actual distance from center.

    if(distance > 1 || distance < 1) { 
        populate(); // calling populate using reflection causes infinite loop.
    }
}

Обратите внимание, что настройка страницы смещенияпредел до максимума - это не то решение, которое я хочу.Мне нужно что-то эффективное, как recyclerView.

Я также использую преобразователь страниц для увеличения выбранного аватара в центре.

...