我正在使用recyclerview的GridLayoutManager在我的应用程序中显示自定义画廊。我已经实现了所有功能,例如图库。但是我有一个小问题。在一行中,我有3张图片。但是我需要减少图像之间的空间。这样做时,我不想连续显示3张以上的图像,但是图像尺寸(如果需要)会增加。

最佳答案

您可以使用自定义RecyclerViewItemDecorator

public class RecyclerViewItemDecorator extends RecyclerView.ItemDecoration {
  private int spaceInPixels;

  public RecyclerViewItemDecorator(int spaceInPixels) {
    this.spaceInPixels = spaceInPixels;
  }

  @Override
  public void getItemOffsets(Rect outRect, View view,
      RecyclerView parent, RecyclerView.State state) {
    outRect.left = spaceInPixels;
    outRect.right = spaceInPixels;
    outRect.bottom = spaceInPixels;

    if (parent.getChildLayoutPosition(view) == 0) {
        outRect.top = spaceInPixels;
    } else {
        outRect.top = 0;
    }
  }
}


然后将其添加到您的RecyclerView中:

// For example 10 pixels
int spaceInPixels = 10;
mRecyclerView.addItemDecoration(new RecyclerViewItemDecorator(spaceInPixels));


希望能帮助到你!

08-04 02:30