RecyclerView使用ItemDecoration设置分割线

本文介绍了一种使用RecyclerView.ItemDecoration自定义分割线的方法。通过MySpaceItemDecoration类实现了不同位置的Item具有不同的左右间距,确保了网格布局中每个Item的正确位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecyclerView使用ItemDecoration设置分割线

public class MySpaceItemDecoration extends RecyclerView.ItemDecoration {
    private int space;

    public MySpaceItemDecoration (int space) {
        this.space = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        // 由于每行都只有3个,所以第一个都是3的倍数,把左边距设为0
        if (parent.getChildLayoutPosition(view) % 2 == 0) {
            outRect.left = 0;
            outRect.right = space/2;
            outRect.bottom = 0;
            outRect.top = 0;
        }else if(parent.getChildLayoutPosition(view) % 2 == 1){
            outRect.left = space/2;
            outRect.right = 0;
            outRect.bottom = 0;
            outRect.top = 0;
        }
    }
}

通过recyclerView.addItemDecoration(yourDecoration);方法设置分割线

这里实现的分割线效果如下图,左右两侧的边距和中间的边距是不一样的,左右两侧的边距是通过在xml文件中Recyclerview的Padding来实现。中间的间距就是上面的代码实现的.
如果在item的layout中用margin来做是实现不了如上效果的。
这里写图片描述

注意点:需要注意的是,gridLayoutManager为横向每个Item分配的宽度是一致的,所以要做到每个item的位置正确,必须在第一个item的右侧设置中间间距的二分之一,第二个item设置左侧边距为二分之一,这样才能保证每个item的位置没有偏移。
不能单独只设置一个item的间距,这样会导致位置偏移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值