【问题标题】:RecyclerView with previous and next page boundaries?具有上一页和下一页边界的 RecyclerView?
【发布时间】:2018-08-29 23:33:45
【问题描述】:

使用 ViewPagers,可以通过“setPageMargin”轻松实现稍微显示上一页和下一页。例如,

vp.setPageMargin(-200) 

可能会产生如下 UI:

但是如何使用 RecyclerViews 来实现呢?项目必须均匀分布,并且当前项目应该居中。

为了设置我的 RecyclerView 来模仿 ViewPager,我利用了 PagerSnapHelper()

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
SnapHelper snapHelper = new PagerSnapHelper();
RecyclerView rvHorizontal = findViewById(R.id.rv_horiz);
rvHorizontal.setLayoutManager(linearLayoutManager);
snapHelper.attachToRecyclerView(rvHorizontal);
// set adapter
mAdapter = new HorizontalAdapter(context, mData);
rvHorizontal.setAdapter(mAdapter);

PagerSnapHelper() 允许我滚动并有一个页面捕捉到位,但是,我如何让页面显示?提前致谢。

【问题讨论】:

    标签: android android-recyclerview android-viewpager


    【解决方案1】:

    但是如何使用 RecyclerViews 来实现呢?物品必须是 均匀分布,当前项目应该居中。

    你可以在RecyclerView中设置ViewHolder项目视图的宽度来实现这个效果。

    您应该使用LinearSnapHelper 而不是PagerSnapHelper

    【讨论】:

    • 没那么简单。要使项目在屏幕上居中,并根据屏幕大小在项目之间包含相等的间距,以及页面显示不能仅通过调整 ViewHolder 项目视图的宽度来完成。我将继续尝试并发布正确的答案。
    • 没试过LinearSnapHelper,让我试试。你可能正在做某事。我使用 PagerSnapHelper 遇到的问题是屏幕 1。当我调整宽度时,第一项未在屏幕中居中。项目之间的间距有效。但是从你的第一个项目开始,我无法开始工作,因为调整间距会改变项目的位置。但我会继续努力。我现在正在使用 ViewPager。
    猜你喜欢
    • 2012-12-04
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多