Android library providing simple way to control divider items (ItemDecoration) of RecyclerView
RecyclerView-FlexibleDivider
这是一款Android库,提供了简单的方式来控制RecyclerView中的分隔线。

更新日志
Gradle 集成
在你的build.gradle文件中添加以下代码:
repositories {
jcenter()
}
dependencies {
implementation 'com.yqritc:recyclerview-flexibledivider:1.4.0'
}
使用方法
以下是基础用法,将在每个单元格之间绘制从 android.R.attr.listDivider 获取的分隔线。
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this).build());
| 分类装饰器 | 使用场景 |
|---|---|
| HorizontalDividerItemDecoration | 用于垂直布局方向,画水平分隔线 |
| VerticalDividerItemDecoration | 用于水平布局方向,画垂直分隔线 |
注意:每次只能设置上述分类装饰器之一。
如果需要设置颜色、大小和外边距,可以这样操作:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(
new HorizontalDividerItemDecoration.Builder(this)
.setColor(Color.RED)
.setSizeResId(R.dimen.divider)
.setMarginResId(R.dimen.leftmargin, R.dimen.rightmargin)
.build());
你也可以直接使用Paint对象来设置:
Paint paint = new Paint();
paint.setStrokeWidth(5);
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setPathEffect(new DashPathEffect(new float[]{25.0f, 25.0f}, 0));
recyclerView.addItemDecoration(
new HorizontalDividerItemDecoration.Builder(this).paint(paint).build());
此外,还可以使用9宫格图像来绘制分隔线:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this)
.drawable(R.drawable.sample)
.size(15)
.build());
如果你想根据位置定制分隔线,可以实现以下接口:
提供者列表
你可以实现以下提供者,并对每个单元格之间的分隔线进行控制。关于这些提供者的详细用法,请参考示例代码中的ComplexAdapter类。
-
ColorProvider
为分隔线提供颜色。 -
PaintProvider
为分隔线提供绘制的对象。 -
DrawableDivider
为分隔线提供图象对象。 -
SizeProvider
为水平分隔线提供高度,为垂直分隔线提供宽度。 -
VisibilityProvider
可以控制分隔线的可见性。 -
MarginProvider(用于水平分隔线,即垂直列表)
允许指定分隔线的左右外边距。 -
MarginProvider(用于垂直分隔线,即水平列表)
允许指定分隔线的上下外边距。
对于GridLayoutManager,上述提供者的position参数是项的组索引。 因此,应基于[组索引](http://developer.android.com/intl/ja/reference/android/support/v7/widget/GridLayoutManager.SpanSizeLookup.html#getSpanGroupIndex(int, int))而不是项的位置来控制分隔线。
可选配置
-
Builder.showLastDivider
是否在RecyclerView的最后一项后面绘制分隔线。 启用此选项后,上述提供者的position参数范围为0到itemCount-1。 否则,范围为0到itemCount-2。 -
Builder.positionInsideItem
让分隔线在项目内部绘制。 若要遵循材料设计指南,请开启这个功能。
注意事项
- 如果没有设置颜色、Paint或图象,则默认会使用
android.R.attr.listDivider的分隔线。 - 当设置Paint时,必须使用paint类的setColor和setStrokeWidth方法。
- 如需使用DashPathEffect,请注意以下问题:Issue Link
想自定义ItemDecoration以实现在GridLayoutManager下的等宽列间距吗?
查看https://gist.github.com/yqritc/ccca77dc42f2364777e1
许可证
版权所有 2016 yqritc
根据Apache许可证2.0版授权("许可");
您不得使用本文件,除非遵守该许可。
您可以从以下链接获得许可的副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,软件
根据许可分发是按“原样”提供的,
不提供任何形式的保修或条件。
参阅许可文本来了解特定的
许可权限和限制的详情。