2017-04-14 27 views
0

您将如何根据他们在屏幕上的位置给水平RecyclerView中的物品垂直偏移?当用户向左或向右滚动时,我希望物体在靠近屏幕的两端时接近中间位置时降低。RecyclerView物品垂直填充取决于他们的位置

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

enter image description here

回答

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

+0

非常好!它很棒!非常感谢你! – MarkInTheDark