Closed zzh1026 closed 6 years ago
me too
@zzh1026 @zzh1026 UltraViewPagerView.java 上面这部分代码作者应该在改 #53 这个bug时改错了,修改成下面就好了
public void setMultiScreen(float ratio) {
multiScrRatio = ratio;
if (pagerAdapter != null) {
pagerAdapter.setMultiScrRatio(ratio);
needsMeasurePage = true;
}
float pageMargin = (1 - ratio) * getResources().getDisplayMetrics().widthPixels;
if (scrollMode == UltraViewPager.ScrollMode.VERTICAL) {
setPageMargin((int) (pageMargin));
} else {
if ((int) pageMargin == 0) {
setPageMargin(0);
} else {
setPageMargin((int) (-(pageMargin + convertDp2Px(getContext(), 1f))));
}
}
}
private int convertDp2Px(Context context, float dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context
.getResources().getDisplayMetrics());
}
public void setMultiScreen(float ratio) {
multiScrRatio = ratio;
if (pagerAdapter != null) {
pagerAdapter.setMultiScrRatio(ratio);
needsMeasurePage = true;
}
float pageMargin = (1 - ratio) * getResources().getDisplayMetrics().widthPixels;
setPageMargin((int) (pageMargin));
}
目前可以看到官方是这么写的,我觉得完全没有问题,只是默认将PageMargin设置为了(屏幕宽度-Item宽度),这是非常合理的,上面 @xingshijie 的改造应该没必要,如果你想要调整page之间的距离,在外部直接设置pageMargin就可以了,如下:
ultraViewPager.getViewPager().setPageMargin(-300);
这样一屏就可以显示多个,具体的margin还要你自己根据需求来改, @zzh1026
Fixed on version 1.0.7.0
未修改demo , 设置一屏多显不起作用, 还是只能看到一个而非显示上一个和下一个的一部分