就不多叙述了,直接上代码
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.TypedValue;
import android.view.View;
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
/*
* RecyclerView的布局方向,默认先赋值
* 为纵向布局
* RecyclerView 布局可横向,也可纵向
* 横向和纵向对应的分割想画法不一样
* */
private int mOrientation = LinearLayoutManager.VERTICAL;
/**
* item之间分割线的size,1---5
*/
private int mSize;
/**
* 绘制item分割线的画笔,和设置其属性
* 来绘制个性分割线
*/
private Paint mPaint;
/**
* 构造方法传入布局方向,不可不传
*
* @param context context
* @param orientation 布局方向
* @param color 颜色
* @param mItemSize item之间分割线的size
*/
public DividerItemDecoration(Context context, int orientation, int color, int mItemSize) {
this.mOrientation = orientation;
/*
item之间分割线的颜色
*/
this.mSize= mItemSize;
if (orientation != LinearLayoutManager.VERTICAL && orientation != LinearLayoutManager.HORIZONTAL) {
throw new IllegalArgumentException("LinearLayoutManager error");
}
mSize = (int) TypedValue.applyDimension(mItemSize, TypedValue.COMPLEX_UNIT_DIP, context.getResources().getDisplayMetrics());
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(color);
/*设置填充*/
mPaint.setStyle(Paint.Style.FILL);
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == LinearLayoutManager.VERTICAL) {
drawVertical(c, parent);
} else {
drawHorizontal(c, parent);
}
}
/**
* 绘制纵向 item 分割线
*
* @param canvas canvas
* @param parent parent
*/
private void drawVertical(Canvas canvas, RecyclerView parent) {
final int left = parent.getPaddingLeft();
final int right = parent.getMeasuredWidth() - parent.getPaddingRight();
final int childSize = parent.getChildCount();
for (int i = 0; i < childSize; i++) {
final View child = parent.getChildAt(i);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + layoutParams.bottomMargin;
final int bottom = top + mSize;
canvas.drawRect(left, top, right, bottom, mPaint);
}
}
/**
* 绘制横向 item 分割线
*
* @param canvas canvas
* @param parent parent
*/
private void drawHorizontal(Canvas canvas, RecyclerView parent) {
final int top = parent.getPaddingTop();
final int bottom = parent.getMeasuredHeight() - parent.getPaddingBottom();
final int childSize = parent.getChildCount();
for (int i = 0; i < childSize; i++) {
final View child = parent.getChildAt(i);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
final int left = child.getRight() + layoutParams.rightMargin;
final int right = left + mSize;
canvas.drawRect(left, top, right, bottom, mPaint);
}
}
/**
* 设置item分割线的size
*
* @param outRect outRect
* @param view view
* @param parent parent
* @param state state
*/
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == LinearLayoutManager.VERTICAL) {
outRect.set(0, 0, 0, mSize);
} else {
outRect.set(0, 0, mSize, 0);
}
}
}
调用的时候这样写:
复制代码 代码如下:mRecyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL, Color.RED,5));
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# RecyclerView
# 分割线
# RecyclerView底部分割线去除的方法
# android中RecyclerView自定义分割线实现
# Android RecyclerView网格布局(支持多种分割线)详解(2)
# RecyclerView消除底部分割线的方法
# RecyclerView的万能分割线
# 浅谈Android RecyclerView 间距全适配
# Android RecyclerView使用GridLayoutManager间距设置的方法
# RecyclerView设置间距和添加分割线的方法
# 不多
# 也可
# 大家多多
# 不传
# VERTICAL
# mOrientation
# item
# size
# error
# ItemDecoration
# extends
# applyDimension
# int
# private
# mSize
# mItemSize
# color
# amp
# throw
相关文章:
建站之星导航菜单设置与功能模块配置全攻略
郑州企业网站制作公司,郑州招聘网站有哪些?
七夕网站制作视频,七夕大促活动怎么报名?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何用好域名打造高点击率的自主建站?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何选择高效可靠的多用户建站源码资源?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
家庭服务器如何搭建个人网站?
建站之星如何开启自定义404页面避免用户流失?
如何快速搭建个人网站并优化SEO?
网站制作公司,橙子建站是合法的吗?
香港服务器选型指南:免备案配置与高效建站方案解析
高端建站如何打造兼具美学与转化的品牌官网?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
广平建站公司哪家专业可靠?如何选择?
如何快速重置建站主机并恢复默认配置?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
建站之星后台密码如何安全设置与找回?
如何使用Golang安装API文档生成工具_快速生成接口文档
上海网站制作开发公司,上海买房比较好的网站有哪些?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
网站制作员失业,怎样查看自己网站的注册者?
如何通过山东自助建站平台快速注册域名?
如何用5美元大硬盘VPS安全高效搭建个人网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
广州商城建站系统开发成本与周期如何控制?
已有域名和空间,如何快速搭建网站?
C#怎么创建控制台应用 C# Console App项目创建方法
网站制作知乎推荐,想做自己的网站用什么工具比较好?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星客服服务时间及联系方式如何?
html制作网站的步骤有哪些,iapp如何添加网页?
建站之星如何实现五合一智能建站与营销推广?
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何获取上海专业网站定制建站电话?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何用wdcp快速搭建高效网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何在阿里云完成域名注册与建站?
如何用低价快速搭建高质量网站?
网站企业制作流程,用什么语言做企业网站比较好?
如何选择可靠的免备案建站服务器?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Python文件管理规范_工程实践说明【指导】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
*请认真填写需求信息,我们会在24小时内与您取得联系。