本文实例为大家分享了Android自定义SpaceItemDecoration分割线的具体代码,供大家参考,具体内容如下
此线是在RecyclerView中的GridlayoutManager中使用的 效果图如下:
/** * author: Y_Qing * date: 2018/5/7 */ public class SpaceItemDecoration extends RecyclerView.ItemDecoration { private int space; Paint mPaint; public SpaceItemDecoration(int space) { this.space = space; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(0xffededed); mPaint.setStyle(Paint.Style.FILL); } private static final int HORIZOnTAL= 355; @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int itemViewType = parent.getLayoutManager().getItemViewType(view); if (itemViewType == HORIZONTAL) { //根据ViewType类型来判断是否展示线 outRect.bottom = space; if (parent.getChildLayoutPosition(view) % 2 == 0) { outRect.right = space / 2; outRect.left = space; } else { outRect.right = space; outRect.left = space / 2; } } } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { c.save(); if (parent.getLayoutManager() instanceof GridLayoutManager) { if ((((GridLayoutManager) parent.getLayoutManager())).getSpanCount() == 2) { draw(c, parent); } } c.restore(); } //绘制横向 item 分割线 private void draw(Canvas canvas, RecyclerView parent) { int childSize = parent.getChildCount(); for (int i = 0; i
使用方法下:
private void initSpaceLine() { if (decor == null) { decor = new SpaceItemDecoration(ViewUtil.dp2px(5)); recycleListView.addItemDecoration(decor); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。