ViewPager2 and PageTransformer selects wrong page randomly

522 views Asked by At

I have a viewpager2 added under a ConstraintLayout and set with a PageTransformer to show previous and next page previews

private void setPageMargin(ViewPager2 viewpager2) {
        viewpager2.setOffscreenPageLimit(3);
        float nextItemVisiblePx = mContext.getResources().getDimension(R.dimen.viewpager_next_item_visible);
        float currentItemHorizontalMarginPx = mContext.getResources().getDimension(R.dimen.viewpager_current_item_horizontal_margin);
        viewpager2.setPageTransformer((page, position) -> {
            float offset = position * -(2 * nextItemVisiblePx + currentItemHorizontalMarginPx);
            if (ViewCompat.getLayoutDirection(viewpager2) == ViewCompat.LAYOUT_DIRECTION_RTL) {
                page.setTranslationX(-offset);
            } else {
                page.setTranslationX(offset);
            }
            if (position < -1)
                page.setAlpha(0.5f);
            else if (position <= 1) {
                page.setAlpha(Math.max(0.5f, 1 - Math.abs(position)));
            } else page.setAlpha(0.5f);
        });


    }

When I set viewpager2.setcurrentItem(pos), it selects wrong page in a random manner. Please anyone can point out what could be the possible issue here?

0

There are 0 answers