博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RecyclerView分隔线定制
阅读量:6277 次
发布时间:2019-06-22

本文共 1695 字,大约阅读时间需要 5 分钟。

分割线我们利用RecyclerView的addItemDecoration(ItemDecoration fromHtml) 新建一个类来看看到底是什么:

public class CategoryItemDecoration extends RecyclerView.ItemDecoration {    @Override    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {    }    @Override    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {            }}

有两个方法getItemOffsets()这里我一般指定偏移量就可以了,就是分割线占多少高度,或者说是画在什么位置,你总的给我留出位置来;onDraw()我们可以直接去绘制,绘制什么都可以因为有Canvas ,但一般都是绘制Drawable。

public class CategoryItemDecoration extends RecyclerView.ItemDecoration {    private Paint mPaint;    public CategoryItemDecoration(int color) {        // 直接绘制颜色  只是用来测试        mPaint = new Paint();        mPaint.setColor(color);        mPaint.setAntiAlias(true);    }    @Override    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {        int childCount = parent.getChildCount();        // 获取需要绘制的区域        Rect rect = new Rect();        rect.left = parent.getPaddingLeft();        rect.right = parent.getWidth() - parent.getPaddingRight();        for (int i = 0; i < childCount; i++) {            View childView = parent.getChildAt(i);            rect.top = childView.getBottom();            rect.bottom = rect.top + 20;            // 直接利用Canvas去绘制一个矩形 在留出来的地方            c.drawRect(rect, mPaint);        }    }    @Override    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {        // 在每个子View的下面留出20px来画分割线        outRect.bottom += 20;    }}

 

2.RecyclerView源码解析 - 分割线

猜想:   既然考虑了分割线,那么子View在测量时候肯定要去考虑分割线留出的位置    直接measureChild()方法

猜想: 分割线会调用绘制的方法 onDraw()

 

转载于:https://www.cnblogs.com/ganchuanpu/p/8151462.html

你可能感兴趣的文章
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
多线程基础知识
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>