ViewPager上同时有多个页面

Kir*_*man 48 android android-viewpager

当使用ViewPager?时,是否有可能同时显示两个页面?我不是在寻找边缘效果,而是在寻找两个完整的页面.

提前致谢.

小智 67

请看getPageWidth相应的方法PagerAdapter.覆盖它并返回例如0.8f让所有子页面仅覆盖ViewPager宽度的80%.

更多信息:http: //developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)


Pau*_*sma 32

在这里查看我的最新答案:ViewPager每页可以有多个视图吗?

通过为ViewPager指定负边距,我发现了一个更简单的解决方案.我在GitHub上创建了MultiViewPager项目,您可能需要查看:

https://github.com/Pixplicity/MultiViewPager

虽然这个问题特别要求没有边缘效应的解决方案,但是这里的一些答案提出了CommonsWare的解决方法,例如kaw的建议.

使用该特定解决方案存在触摸处理和硬件加速的各种问题.在我看来,更简单,更优雅的解决方案是为ViewPager指定负边距:

ViewPager.setPageMargin(
    getResources().getDimensionPixelOffset(R.dimen.viewpager_margin));
Run Code Online (Sandbox Code Playgroud)

然后我在我的中指定了这个维度dimens.xml:

<dimen name="viewpager_margin">-64dp</dimen>
Run Code Online (Sandbox Code Playgroud)

为了弥补重叠页面,每个页面的内容视图具有相反的边距:

android:layout_marginLeft="@dimen/viewpager_margin_fix"
android:layout_marginRight="@dimen/viewpager_margin_fix"
Run Code Online (Sandbox Code Playgroud)

再次在dimens.xml:

<dimen name="viewpager_margin_fix">32dp</dimen>
Run Code Online (Sandbox Code Playgroud)

(请注意,viewpager_margin_fix尺寸是绝对viewpager_margin尺寸的一半.)

我们在荷兰报纸应用程序De Telegraaf Krant中实现了这一点:

De Telegraaf Krant的电话示例平板电脑的例

  • 为我工作.您还需要添加setOffScreenPageLimit(2)以将缓存改进为2,以避免滞后于第二个下一个视图. (2认同)

fla*_*327 12

您必须覆盖 getPageWidth()viewpager的Adapter上的方法.例如:

@Override
public float getPageWidth(int position) {
    return 0.9f;
}
Run Code Online (Sandbox Code Playgroud)

在适配器中尝试该代码,然后您就会明白了.

  • 这与@ Markus-Wörz的答案非常相似? (3认同)

小智 5

查看该博客条目.
PagerContainer技术解决了我的问题.

编辑:
我找到了相同的答案.
如何从Gallery迁移到Horizo​​ntalScrollView和ViewPager?

  • 欢迎来到StackOverflow!您是否希望在您的答案中添加该博文的摘录,以便在链接死亡时它仍然有用? (2认同)

aim*_*ngo -2

我认为由于视图寻呼机的限制这是不可能的。它只允许用户一次查看第 1 页。您也许可以使用片段来解决一些问题,并排放置 2 个 ViewPager 片段并使用按钮来实现您想要实现的页面翻转,但代码可能会变得非常复杂。

您可以尝试像 ViewFlipper 这样的东西 - 您可以在其中进行更多自定义(包括动画)。

希望这可以帮助。