RecyclerView addItemDecoration 的妙用 - item 间距平均分布和添加分割线

本文详细介绍了如何在 RecyclerView 中使用 addItemDecoration 实现 item 间距平均分布和添加分割线,包括针对 GridLayoutManager 和横向 LinearlayoutManager 的具体实现方式,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

在提供给RecyclerView的画布上绘制任何适当的装饰。通过此方法绘制的任何内容都将在绘制项目视图之前绘制,因此将显示在 item 视图下面

void onDrawOver (Canvas c, RecyclerView parent, RecyclerView.State state)

Draw any appropriate decorations into the Canvas supplied to the RecyclerView. Any content drawn by this method will be drawn after the item views are drawn and will thus appear over the views.

在提供给RecyclerView的画布上绘制任何适当的装饰。通过此方法绘制的任何内容都将在绘制项目视图之后绘制,因此将出现在 item 视图上面。


如何添加分割线


在这里插入图片描述

RecyclerViewDivider,已支持以下功能

  1. 自定义分割线,设置 drawable

  2. 设置分割线高度,颜色

  3. 设置分割线距离屏幕左边,右边的距离

  4. 设置是否显示最后一条分割线

详情代码见 RecyclerViewSample

实现思路

我们知道 RecyclerView 没有像之前 ListView 提供 divider 属性,设置分割线的话有挺多人在 itemView 的布局里面加个 1dp 左右的 view,根据业务场景设置是否可见。这是其中的一种方法。

但其实,我们也可以使用 recyclerView.addItemDecoration() 来实现,主要需要重写 getItemOffsets 和 onDraw 方法

思路很简单

  1. 重写 getItemOffsets 方法,加上 divider 的高度,影响 itemView 的最终 size

  2. 在 onDraw 方法,根据 LinearLayoutManager 的方向分别绘制分割线

@Override

public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

super.getItemOffsets(outRect, view, parent, state);

outRect.set(0, 0, 0, mDividerHeight);

}

@Override

public void onDraw(Canva

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值