我有一个viewpager,它的每个视图都是卡片组上卡片的表示。每张卡的边框上都有一个使用viewpager边距的阴影:

cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);

而且工作如期。
但是,如果我添加一个pagetransformer,以便右侧的卡片将堆叠在左侧的卡片之上:
public class ScalePageTransformer implements PageTransformer {
    private final ViewPager mViewPager;

    public ScalePageTransformer(ViewPager viewPager) {
        this.mViewPager = viewPager;
    }

    @Override
    public void transformPage(View page, float position) {
        if (position <= 0) {
            int pageWidth = mViewPager.getWidth();
            final float translateValue = position * -pageWidth;
            if (translateValue > -pageWidth) {
                page.setTranslationX(translateValue);
            } else {
                page.setTranslationX(0);
            }
        }
    }
}

我这样做是通过:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));

但现在,利润率并没有出现。如果我在pagetransformer上有一个缩小效果,我可以看到当前卡被缩小时,屏幕上可提取的边距低于当前卡。这是一张照片来描述正在发生的事情:
蓝卡在红卡上方从右向左刷卡。由于红卡有一个规模转换,我们可以看到其背后的黑色保证金。
有没有办法强制将可提取的保证金放在红牌上方?这难道不是默认行为吗?

最佳答案

更改为

cardsViewPager.setPageTransformer(true, new ScalePageTransformer(cardsViewPager));

第一个参数是绘图顺序

08-05 04:44