我将Viewpager迁移到Viewpager2,使用Viewpager2加载视图后,该视图仅显示列表中的第一项,列表中有8-9项,如果滚动查看第二项,并且第一项的位置重叠。
谁能帮忙解决Viewpager2中的上述问题,加载时以及水平滚动而不重叠时,我需要显示所有项目。
在视图分页器中,我们使用getPageWidth()代码对ViewPager和一个页面中的上一页和下一页边界进行查看。现在在Viewpager2中,帽子是具有相同效果的等效方法。不胜感激!
我们可以从以下两种方法中选择一种:
solution1-MarginPageTransformer的引入是为了能够在页面之间(页面插图之外)创建空间。
mBinding.viewPager.setPageTransformer(new MarginPageTransformer(30));
solution2-自定义setPageTrarnsformer
float pageMargin = getResources().getDimensionPixelOffset(R.dimen.pageMargin);
float pageOffset = getResources().getDimensionPixelOffset(R.dimen.offset);
mBinding.viewPager.setPageTransformer((page, position) -> {
Log.d(TAG,"position: "+position + " pageOffset: "+ pageOffset + " pageMargin:"+ pageMargin);
float myOffset = position * -(2 * pageOffset + pageMargin);
Log.d(TAG,"myOffset: "+myOffset);
if (mBinding.viewPager.getOrientation() == ViewPager2.ORIENTATION_HORIZONTAL) {
if (ViewCompat.getLayoutDirection(mBinding.viewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) {
page.setTranslationX(-myOffset);
} else {
page.setTranslationX(myOffset);
}
} else {
page.setTranslationY(myOffset);
}
});
dimens.xml
<dimen name="pageMargin">30dp</dimen>
<dimen name="offset">40dp</dimen>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句