【问题标题】:Android ViewPager with previous and next pages visible?上一页和下一页可见的Android ViewPager?
【发布时间】:2011-12-05 05:15:37
【问题描述】:

我目前正在构建一个水平视频库。

我想做这样的事情,只有一个视频居中,并且是上一个和下一个视频的一部分:

我首先选择了Gallery,但它的局限性让我寻找别的东西。我想显示一个页面指示器,使用图库很难实现。

第二个选项是从 Android 兼容性库中获取 ViewPager。我找到了一种在它上面实现page indicator 的方法。但是现在,如何部分显示左右页面呢?

【问题讨论】:

标签: android gallery pager android-viewpager android-support-library


【解决方案1】:

我使用负页边距来部分显示下一页和上一页。 fading edge 属性可用于使上一页/下一页淡化:

ViewPager examplePager = (ViewPager) findViewById(R.id.exampleView);
examplePager.setPageMargin(-50);
examplePager.setHorizontalFadingEdgeEnabled(true);
examplePager.setFadingEdgeLength(30);

此功能还需要最新的支持包(2011 年 10 月第 4 版)

【讨论】:

  • 在使用 android-support-v4-r7 的 Android 2.2 上,这会导致页面左侧出现白色渐变,但左侧屏幕仍然不可见。你在哪台设备上测试过这个?
  • @marmor 我在很多设备上测试了它,其中大多数运行 Android 2.3.3,一些 Android 2.2 甚至一些 Android 2.1 设备。我在任何设备上都没有问题。正页边距是否按预期工作?也许您的视图没有透明背景,因此当前视图可能会与相邻视图重叠?
  • 我在运行 2.2 的 HTC hero 上对此进行了测试,我有一个非常非标准的布局,其中左侧片段充当隐藏的操作栏,所以也许这个解决方案不适用于我的情况。我最终通过对正确的片段应用填充来解决这个问题,谢谢!
  • @Konrad:感谢您的回答,负边距会因设备而异,我将页边距设置为 (-65),并在 HTC 一台和 Xperia Z 这两种设备中进行了测试Z 它看起来不错,但在 htc 上的两个页面被合并了。如何将其设置为全局?
  • setPageMargin 以像素为单位,您可能想使用 dp,这里有转换它们的方法:stackoverflow.com/questions/8309354/…
【解决方案2】:

在 recyclerview 中使用此代码并使用 snap helper

recyclerView.setAdapter(mAdapter);
LinearLayoutManager layoutManager = new 
LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, 
false);

recyclerView.setLayoutManager(layoutManager);
    new LinearSnapHelper().attachToRecyclerView(recyclerView);

 recyclerView.setScrollingTouchSlop(  recyclerView.TOUCH_SLOP_PAGING);

more info about snaphelper layout

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多