簡體   English   中英

遷移到 viewpager2 不加載所有上一頁和下一頁邊界視圖以及 viewpager2 中 getPageWidth() 的等效方法是什么

[英]Migrating to viewpager2 not loading all previous and next page boundaries view and what is the equivalent method to getPageWidth() in viewpager2

我正在將 Viewpager 遷移到 Viewpager2,在使用 Viewpager2 加載視圖后,首先只顯示列表中的一個項目,列表有 8-9 個項目,如果我滾動能夠看到第二個項目,並且第一個項目中的選址會重疊。

任何人都可以幫助如何解決 Viewpager2 中的上述問題,我需要在加載和水平滾動而不重疊時顯示所有項目。

在視圖分頁器中,我們使用 getPageWidth() 代碼為 ViewPager 在一個屏幕中查看上一頁和下一頁邊界視圖。 現在在 Viewpager2 hat 是具有相同效果的等效方法 任何幫助表示贊賞!

我們有兩種方式可以從以下任意一種中選擇:

解決方案 1 - 引入 MarginPageTransformer 以提供在頁面之間(頁面插圖之外)創建空間的能力。

        mBinding.viewPager.setPageTransformer(new MarginPageTransformer(30));

解決方案 2 - 自定義 setPageTransformer

        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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM