ViewPager:为第一页和最后一页设置不同的填充

11

我已经为我的ViewPager实现了一个“页面预览”功能:

mPager.setClipToPadding(false);
mPager.setPadding(120, 0, 120, 0);
mPager.setPageMargin(60);

通过这样做,我可以查看前一页和后一页的一部分。但是第一页和最后一页会显示更大的空白,因为在此方向上没有其他页面可供查看。

我该如何为第一页和最后一页设置不同的内边距?


我没有找到直接解决您问题的方法,但是您可以在FragmentPagerAdapter中覆盖getPageWidth并返回0.9f,这样视图将占用ViewPager宽度的90%,但只显示下一页(而不是上一页),除了在最后一页。 - MohanadMohie
很不幸,当有两个页面可用时,我需要展示两个页面... - Alessandro
你是怎么做到的? - hardik9850
1个回答

19

我曾经遇到过同样的问题,通过设置自定义的PageTransformer来解决。我实际上是在第一页和最后一页时平移了页面。如果这种方法适用于你,请告诉我。

mPager.setClipToPadding(false);
mPager.setPadding(120, 0, 120, 0);
mPager.setPageMargin(60);    
mPager.setPageTransformer(false, new ViewPager.PageTransformer() {
        @Override public void transformPage(View page, float position) {
            if (mPager.getCurrentItem() == 0) {
                page.setTranslationX(-120);
            } else if (mPager.getCurrentItem() == adapter.getCount() - 1) {
                page.setTranslationX(120);
            } else {
                page.setTranslationX(0);
            }
        }
    });

最后一个项目的右填充比第一个项目的左填充小。为什么? :/ - vihkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接