Android - 多个可查看项目的水平滚动

Bos*_*one 49 android horizontal-scrolling android-viewpager

编辑:看看我自己的答案,以便于解决

重要提示:Bounty提供了明确的方式来修改ViewPager以满足下面概述的方案.请不要提供Horizo​​ntalScrollView - 我需要覆盖完整的Fragment生命周期场景

我需要实现Fragments基于视图的水平滚动,其中一个项目位于中心,右侧/左侧的项目部分或完全可见.ViewPager不适合这项任务,因为它专注于每次显示一个项目.

为了便于理解,下面是一个快速草图,其中第1项,第5项和第6项位于可视区域之外.并且想要使这个可查看的数字可配置,例如在纵向视图中,我将只显示2个(或可能只是一个)项目.

我不打算在屏幕上说出3个项目,只要显示中心项目,其他项目就可以被裁剪.在小屏幕上可以有1个中心项目,并且当屏幕增大时,应显示多个(裁剪为OK)项目

我知道这看起来像一个画廊但是这些项目不是简单的图像,而是Fragments在每个片段中都有一个可垂直滚动的列表

PS找到了@Commonsware的这篇博文,其中列出了3种不同的方法.根据我的需要,我喜欢#3

在此输入图像描述

Bos*_*one 24

这个答案非常简单,我甚至不确定为什么它不会立即发布.为了获得确切的效果,我需要做的就是覆盖PagerAdapter#getPageWidth方法.默认情况下,它返回1但如果将其设置为0.5,则将获得2页,0.33将为您提供3,等等.根据寻呼机项目之间的分隔符宽度,您可能需要略微降低该值.

请参阅以下代码段:

    @Override
    public float getPageWidth(final int position) {
        // this will have 3 pages in a single view
        return 0.32f;
    }
Run Code Online (Sandbox Code Playgroud)