RecyclerView项目垂直填充取决于它们的位置

时间:2017-04-14 17:10:36

标签: android android-recyclerview adapter

如何根据它们在屏幕上的位置为水平RecyclerView中的项目提供垂直偏移?当用户向左或向右滚动时,我希望物体在接近中间时上升,在接近屏幕的两端或侧面时降低。

这是我想要的效果的图片。蓝色表示向左和向右滚动。红色表示每个项目的垂直偏移量,具体取决于它们在屏幕上的位置。当用户向左或向右滚动时,我希望他们根据位置平稳地上升和下降。

enter image description here

1 个答案:

答案 0 :(得分:1)

您必须创建自定义ItemDecoration,它看起来像这样:

public class MyItemDecoration extends RecyclerView.ItemDecoration {

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        final int childCount = parent.getAdapter().getItemCount();
        final int center = childCount >> 1;
        final int currentPosition = parent.getChildAdapterPosition(view);
        if (currentPosition < center) {
            outRect.set(0, 0, 0, currentPosition * 10);
        } else {
            outRect.set(0, 0, 0, (childCount - currentPosition) * 10);
        }
    }
}

<强>用法

recyclerView.addItemDecoration(new MyItemDecoration());

结果:

enter image description here