我有一个ViewPager,其中每个视图都代表卡片上的卡片.每张卡片使用ViewPager边距在边框上有阴影:
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
Run Code Online (Sandbox Code Playgroud)
它按预期工作.
但是,如果我添加一个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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
Run Code Online (Sandbox Code Playgroud)
但现在,保证金没有出现.如果我在PageTransformer上有缩小效果,我可以看到当前卡缩小的时间,可绘制的边距低于屏幕上的当前卡.这是一张描述正在发生的事情的图片:
红卡顶部正在从右向左滑动蓝卡.由于红牌有一个比例变换,我们可以看到它背后的黑色可绘制.
有没有办法强制将保证金绘制在红牌之上?这不应该是默认行为吗?