您可以使用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));