温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Android中自定义上下左右间隔线

发布时间:2022-04-19 11:02:49 来源:亿速云 阅读:215 作者:iii 栏目:开发技术

这篇文章主要介绍了怎么在Android中自定义上下左右间隔线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么在Android中自定义上下左右间隔线文章都会有所收获,下面我们一起来看看吧。

代码如下:

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 < childSize; i++) {       View child = parent.getChildAt(i);       RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();       int left = child.getLeft();       int right = child.getRight();       int top = child.getBottom() + layoutParams.bottomMargin;       int bottom = top + space;       if (mPaint != null) {         canvas.drawRect(left, top, right, bottom, mPaint);//绘制图片下放的水平线       }       if (parent.getChildLayoutPosition(child) % 2 == 0) {         canvas.drawRect(0, child.getTop(), left, child.getBottom() + space, mPaint);//绘制左边图片的左间线       }       top = child.getTop();       bottom = child.getBottom() + space;       left = child.getRight() + layoutParams.rightMargin;       right = left + space;       if (mPaint != null) {         canvas.drawRect(left, top, right, bottom, mPaint);//绘制图片的右间线       }     }   } }

使用方法下:

private void initSpaceLine() {     if (decor == null) {       decor = new SpaceItemDecoration(ViewUtil.dp2px(5));       recycleListView.addItemDecoration(decor);     }   }

关于“怎么在Android中自定义上下左右间隔线”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么在Android中自定义上下左右间隔线”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI