android - PageTransformer 转换中的 ViewPager 边距

标签 android android-viewpager

我有一个 ViewPager,其中它的每个 View 都表示一副卡片。使用 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 上有缩小效果,我可以看到当当前卡片被缩小时,margin drawable 位于屏幕上当前卡片的下方。这是一张描述正在发生的事情的图片:

Image

蓝卡在红卡上方从右向左滑动。由于红色卡片有比例变换,我们可以看到它后面的黑色边距。

有没有办法强制可抽取的边距位于红牌之上?这不应该是默认行为吗?

最佳答案

改为

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

第一个参数是绘制顺序

关于android - PageTransformer 转换中的 ViewPager 边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159243/

相关文章:

android - 如何取消选中或清除单选按钮组?

android - webview 和 textview 中的文本大小相同

Android - fragment 屏幕旋转

android - 为什么即使创建了新实例,ViewPager 仍保留其当前页面?

android - 不使用 XML 动画文件旋转

android - 如果应用程序在后台,则点击通知栏不会在 Activity 中收到消息

android - 如何在自定义 tablayout 中更改 tablayout 选定的文本颜色

android - Viewpager 不显示第一个 fragment 的菜单项

java - Android HttpsUrlConnection 验证 SSL

android-viewpager - 安卓 : Unwanted Image stretching in ViewPager