首页 > 解决方案 > 拖动时初始化 Viewpager 视图

问题描述

我有一个用于选择头像的视图寻呼机。此视图寻呼机一次显示 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 这样高效的东西。

我还使用页面转换器在中心缩放选定的头像。

标签: javaandroidandroid-viewpager

解决方案


推荐阅读