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

本文介绍如何利用 RecyclerView.addItemDecoration() 实现 item 间距平均分布和添加分割线,详细讨论了针对 GridLayoutManager 的解决方案,并提供了核心代码示例。内容包括自定义分割线、设置间距以及绘制方法。此外,还分享了Android开发面试经验和进阶学习资源。

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

在提供给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(Canvas c, RecyclerView parent, RecyclerView.State state) {

super.onDraw(c, parent, state);

if (mOrientation == LinearLayoutManager.VERTICAL) {

drawVerticalDivider(c, parent);

} else {

drawHorizontalDivider(c, parent);

}<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值