У меня есть пейджер для выбора аватара.этот пейджер отображает по 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.
Я также использую преобразователь страниц для увеличения выбранного аватара в центре.