Android ViewPager如何显示前一页和后一页?

35

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

我想做的是只有一个视频居中,前后视频部分可见的效果: enter image description here

我最初选择了Gallery,但它的限制让我寻找其他的东西。我想要显示页面指示器,使用Gallery实现相当困难。

第二个选项是使用Android兼容库中的ViewPager。我找到了一种实现页面指示器的方法。但现在,如何部分显示左侧和右侧页面?


看这里。我曾经遇到过类似的问题,这个帖子对我很有帮助。https://dev59.com/72rWa4cB1Zd3GeqP-V5F?answertab=votes#tab-top - user1974235
2个回答

47

我使用了负的页面边距来部分地显示下一页和上一页。可以使用fading edge属性使上一页/下一页渐隐:

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

这需要最新的支持包(修订版4,2011年10月)才能正常工作。


这会导致页面左侧有一个白色渐变,但仍然无法在使用 android-support-v4-r7 的 Android 2.2 上看到左侧屏幕。你在哪个设备上测试过这个? - marmor
@marmor 我在很多设备上测试过,大部分是运行 Android 2.3.3 的设备,有些是 Android 2.2,甚至还有一些是 Android 2.1 的设备。在任何设备上都没有问题。正页边距是否按预期工作?也许您的视图没有透明背景,因此当前视图可能会重叠相邻的视图? - Konrad
我在运行2.2的HTC Hero上进行了测试,我的布局相当非标准,左侧片段充当隐藏的操作栏,所以也许这个解决方案只是在我的情况下不起作用。最终我通过对右侧片段应用填充来解决了这个问题,谢谢! - marmor
@Konrad:谢谢你的回答,负边距会根据不同设备而变化,我将页面边距设置为(-65),并在HTC one和Xperia Z两个设备上进行了测试,Z的效果很好,但是在htc上两个页面却合并在一起了。我该如何全局设置呢? - Aerrow
setPageMargin接受像素值,你可能想使用dp,这里有一些转换方法:https://dev59.com/F2sy5IYBdhLWcg3wzBJ4 - Daniel Jonker
第一次向右滚动时,它会切割下一个项目。但是在向左滚动后,将采取给定的效果。请帮忙。 - Umesh

0

enter image description here

在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);

有关Snaphelper布局的更多信息


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