Recylerview网格布局分割线(控件四边也有分割线)

本文介绍如何在使用GridLayoutManager时,为RecyclerView创建一个显示四周分割线的GridItemDivider。通过判断item的位置,分别为顶部、底部、左侧和右侧添加分割线,提供了一种简单实现这一功能的方法。
摘要由CSDN通过智能技术生成

关于RecylerView分割线的问题,当布局形式为线性布局LinearLayoutManager的时候, 官方提供了一个定义好的分割线类DividerItemDecoration,但是当布局形式为网格布局GridLayoutManager的时候,官方没有提供其分割线的实现类,需要自己去实现;网上大多网格布局分割线的实现都是只有item中间分割,控件的四周没有分割线,所以这里我实现一个item四周也有分割的网格布局分割线:GridItemDivider

效果图如下:

思路比较简单,判断itemview在recylerview中的四种位置:

1. item是第一个,那么四周都有分割线

2. item是第一行,画上、下、右三边的分割线

3. item是第一列,画左、右、下三边的分割线

4.其他情况,画右、下两边的分割线

重写RecyclerView.ItemDecoration的getItemOffsets,针对四种不同的情况将对应的itemview的缩进

 

下面的完整代码:

public class GridItemDivider extends RecyclerView.ItemDecoration {

    private String TAG = getClass().getSimpleName();
    private static final int[] ATTRS = new int[]{android.R.attr.listDivider};
    private Drawable divider;

    public GridItemDivider(Context context) {
        final TypedArray a = context.obtainStyledAttributes(ATTRS);
        divider = a.getDrawable(0);
        a.recycle();
    }

    public GridItemDivider(Drawable drawable) {
        divider = drawable;
    }

    public GridItemDivider(int height, int color) {
        GradientDrawable shapeDrawable = new GradientDrawable();
        shapeDrawable.setColor(color);
        shapeDrawable.setShape(GradientDrawable.RECTANGLE);
        shapeDrawable.setSize(height, height);
        divider = shapeDrawable;
 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值