android 分割线布局,Android RecyclerView网格布局(支持多种分割线)详解(2)

本文详细介绍了如何在Android中使用RecyclerView创建网格布局,并添加颜色和图片分割线。通过示例展示了如何设置分割线宽度,以及如何在GridLayoutManager中应用分割线装饰器。文章还提供了完整的代码示例,包括GridDivider类的实现,用于绘制颜色和图片分割线。

记录了下RecyclerView的使用方法,并且讲述了线性布局列表的使用方法,在此基础上加上了万能分割线,支持颜色分割线和图片分割线,同时支持对分割线设置线宽。

这篇是总结一下网格布局的使用,同样也支持两种分割线和线宽的设置。

主要的相关类:

1. RecyclerView.Adapter

2. GridLayoutManager 网格布局管理器

3. RecycleView.ItemDecoration 分割线

下面就直接通过一个例子来展示:

先上效果图:

(1) 颜色分割线

779a897d3ab3a4169a339ee3c76b06c4.png

看起来还不错吧,根据item的数量去显示格子,当然如果你需要的样式不是三列,这个很简单,只需要在设置

GridLayoutManager的时候设置相应的列数即可,即:

mManagerLayout = new GridLayoutManager(getActivity(), 3);

(2) 图片分割线

97eb0bddf223d97883511261a6032562.png

可能有人会说你的列表四周都有分割线,其实在不做特殊处理时左边和上面默认是没有分割线的。后面我会加上四周没有分割线的,其实这两种形式在实际开发中都是常见的,先来看四周都有边线的。

由于RecycleView是高度解耦的控件,绘制分割线只和 RecycleView.ItemDecoration 有关,所以我们只需关心怎么去继承 RecycleView.ItemDecoration 去实现我们所需的分割线,如下:

这里需要说明的是:颜色分割线和图片分割线原理是完全一样的,图片分割线只是将一张很细的图片传入即可。

public class GridDivider extends RecyclerView.ItemDecoration {

private Drawable mDividerDarwable;

private int mDividerHight = 1;

private Paint mColorPaint;

public final int[] ATRRS = new int[]{android.R.attr.listDivider};

public GridDivider(Context context) {

final TypedArray ta = context.obtainStyledAttributes(ATRRS);

this.mDividerDarwable = ta.getDrawable(0);

ta.recycle();

}

/*

int dividerHight 分割线的线宽

int dividerColor 分割线的颜色

*/

public GridDivider(Context context, int dividerHight, int dividerColor) {

this(context);

mDividerHight = dividerHight;

//绘制颜色分割线的画笔

mColorPaint = new Paint();

mColorPaint.setColor(dividerColor);

}

/*

int dividerHight 分割线的线宽

Drawable dividerDrawable 图片分割线

*/

public GridDivider(Context context, int dividerHight, Drawable dividerDrawable) {

this(context);

mDividerHight = dividerHight;

mDividerDarwable = dividerDrawable;

}

@Override

public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {

super.onDraw(c, parent, state);

//画水平和垂直分割线

drawHorizontalDivider(c, parent);

drawVerticalDivider(c, parent);

}

public void drawVerticalDivider(Canvas c, RecyclerView parent) {

// 这里传入的parent是recycleview,通过它我们可以获取列表的所有的元素,

// 这里我们遍

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值