线性列表
如果直接绘制item的xml可以实现分割线, 比如你在xml中使用简单的
layout_margin
(设置间距)也能完成你想要的分割线效果, 那么我更建议使用layout_margin
水平分割线¶
创建一个drawable
文件来描述分隔线, 其具备复用的特点
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/dividerDecoration" />
<size android:height="5dp" />
</shape>
创建列表
rv.linear().divider(R.drawable.divider_horizontal).setup {
addType<DividerModel>(R.layout.item_divider)
}.models = getData()
垂直分割线¶
创建Drawable作为分隔线
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/dividerDecoration" />
<size android:width="5dp" />
</shape>
创建列表
rv.linear(RecyclerView.HORIZONTAL).divider(R.drawable.divider_vertical).setup {
addType<DividerModel>(R.layout.item_divider_vertical)
}.models = getData()
- 这里使用
Drawable
资源来快速设置分割线, Drawable的宽高就是分割线的宽高 - 如果水平分割线, 则Drawable的宽度值无效(实际宽度值为RecyclerView的宽)
- 如果垂直分割线, 则Drawable的高度值无效(实际分割线高度为RecyclerView高度)
边缘分割线¶
字段 | 描述 |
---|---|
startVisible | 是否显示首部分割线 |
endVisible | 是否显示尾部分割线 |
includeVisible | 是否显示首尾分割线 |
通过两个字段可以控制首尾是否显示分割线
rv.linear().divider {
setDrawable(R.drawable.divider_horizontal)
startVisible = true
endVisible = true
}.setup {
addType<DividerModel>(R.layout.item_divider_horizontal)
}.models = getData()
四周全包裹¶
这种分割线属于网格分割线, 要求使用DividerOrientation.GRID
, 但LinearLayoutManager并不支持
这里有两种解决办法
- 使用spanCount为1的GridLayoutManager等效
- 在rv两侧单独使用
View
绘制两条分割线
推荐第一种办法, 示例代码如下:
rv.grid().divider{
setDrawable(R.drawable.divider_horizontal)
orientation = DividerOrientation.GRID
includeVisible = true
}.setup {
addType<DividerModel>(R.layout.item_divider_vertical)
}.models = getData()