[英]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.