您可以使用aRecyclerView.ItemDecoration在RecyclerView中的每个项目周围放置额外的边距。在某些情况下,这可以清理适配器实现和项目视图XML。
public class MyItemDecoration extendsRecyclerView.ItemDecoration{ private final int extraMargin; @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent,RecyclerView.Statestate) { int position = parent.getChildAdapterPosition(view); // 在最后一项上增加额外的保证金很容易... if (position + 1 == parent.getAdapter().getItemCount()) { outRect.bottom= extraMargin; // 单位是px } // ...或者您可以给RecyclerView中的每个项目都不同 // 根据其位置的利润率... if (position % 2 == 0) { outRect.right= extraMargin; } else { outRect.left= extraMargin; } // ...或根据商品本身的某些属性 MyListItem item = parent.getAdapter().getItem(position); if (item.isFirstItemInSection()) { outRect.top= extraMargin; } } public MyItemDecoration(Context context) { extraMargin = context.getResources() .getDimensionPixelOffset(R.dimen.extra_margin); } }
要启用装饰,只需将其添加到您的RecyclerView中:
// 在你的onCreate()中 RecyclerView rv = (RecyclerView) findItemById(R.id.myList); rv.addItemDecoration(new MyItemDecoration(context));