我有一个查看寻呼机,用于选择头像。此视图分页器一次显示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这样的高效工具。
我还使用页面转换器在中心缩放选定的头像。