迁移到viewpager2时,不会加载所有上一个和下一个页面边界视图,并且viewpager2中的getPageWidth()等效方法是什么

维吉莉莉

我将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章