RecyclerView添加下划线

Android IRecyclerView 设置分割线 IReyclerView 与RecyclerView 的分割线不同,IRecyclerView headerView 和 footerView 中都默认有两个View,分割线设置也不一样 使用: //添加分割线 IRecyclerLinearVerticalDivider recyclerViewDivider = new IRecyclerLinearVerticalDivider(this, LinearLayoutManager.VERTICAL); recyclerViewDivider.setDrawable(getResources().getDrawable(R.drawable.divider_line_ed_0_5dp), DisplayUtil.dip2px(this, 15), DisplayUtil.dip2px(this, 15), false); mRecyclerView.addItemDecoration(recyclerViewDivider); 立即下载

添加下划线

public class MyDivider extends RecyclerView.ItemDecoration {
    private Paint mPaint;
    private Context context;
    private Drawable divider;
    private int mDividerHeight = 2;//分割线高度,默认为1px
    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
    private int mOrientation;
    public static final int[] ATRRS = new int[]{
            android.R.attr.listDivider
    };
    /**
     * 自定义分割线
     *
     * @param context
     * @param orientation 列表方向
     * @param drawableId  分割线图片
     */
    public MyDivider(Context context, int orientation, int drawableId) {
        this(context, orientation);
        divider = ContextCompat.getDrawable(context, drawableId);
        mDividerHeight = divider.getIntrinsicHeight();
    }
    //获取分割线尺寸
    @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);
    }
    /**
     * 自定义分割线
     *
     * @param context
     * @param orientation   列表方向
     * @param dividerHeight 分割线高度
     * @param dividerColor  分割线颜色
     */
    public MyDivider(Context context, int orientation, int dividerHeight, int dividerColor) {
        this(context, orientation);
        mDividerHeight = dividerHeight;
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setColor(dividerColor);
        mPaint.setStyle(Paint.Style.FILL);
    }


    public MyDivider(Context context, int orientation) {
        this.context = context;
        final TypedArray ta = context.obtainStyledAttributes(ATRRS);
        this.divider = ta.getDrawable(0);
        ta.recycle();
        setOrientation(orientation);
    }

    //设置屏幕的方向
    public void setOrientation(int orientation) {
        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
            throw new IllegalArgumentException("invalid orientation");
        }
        mOrientation = orientation;
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
        super.onDraw(c, parent, state);
        if (mOrientation == HORIZONTAL_LIST) {
            drawVertical(c, parent);
        } else {
            drawHorizontal(c, parent);
        }
    }

    //由于Divider也有宽高,每一个Item需要向下或者向右偏移
    @Override
    public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {
        if (mOrientation == VERTICAL_LIST) {
            outRect.set(0, 0, 0, divider.getIntrinsicHeight());
        } else {
            outRect.set(0, 0, divider.getIntrinsicWidth(), 0);
        }
    }
    //绘制横向 item 分割线
    private void drawHorizontal(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 + mDividerHeight;

            if (divider != null) {
                divider.setBounds(left, top, right, bottom);
                divider.draw(canvas);
            }
            if (mPaint != null) {
                canvas.drawRect(left, top, right, bottom, mPaint);
            }
        }
    }

    //绘制纵向 item 分割线
    private void drawVertical(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 + mDividerHeight;
            if (divider != null) {
                divider.setBounds(left, top, right, bottom);
                divider.draw(canvas);
            }
            if (mPaint != null) {
                canvas.drawRect(left, top, right, bottom, mPaint);
            }
        }
    }
}

在activity里面

 recyclerView.addItemDecoration(new MyDivider(MainActivity.this, LinearLayoutManager.VERTICAL));

这样就可以了


RecyclerView添加虚线分割线 RecyclerView添加虚线分割线,也可添加实线(实线相对简单) 立即下载

相关推荐

新手必看:电路设计里的‘地’到底怎么接?单点、多点、混合接地保姆级图解

本文深入解析电路设计中的接地技术,涵盖单点、多点和混合接地的原理与应用。通过详细的图解和实战案例,帮助新手理解接地在提供参考电位、构成电流回路及抑制电磁干扰中的关键作用,避免常见设计误区,提升电路稳定性与抗干扰能力。

weixin_28455801的博客 297

给Recyclerview添加下划线

http://www.10tiao.com/html/227/201705/2650239745/1.html详解给Recyclerview添加下划线 public class DividerItemDecorations extends RecyclerView.ItemDecoration { private float mDividerHeight; private Pai

qq_33197352的博客 2882

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定得到手眼矩阵到底该咋用? 大家好,我是小鱼。上几期给大家分享了关于手眼标定的方法,如果还有不清楚如何让进行手眼标定的同学可以参考下面的文章: 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!! 很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。 一、手眼矩阵为什么会长的不一样? 做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。 1.旋转的表

生活不止眼前的苟且 5342

Android开发中自定义View实现RecyclerView下划线

Android开发中自定义View实现RecyclerView下划线

qq_36451275的博客 1326

保姆级教程:在RK3568上调试RGMII网口,从设备树到PHY驱动的完整避坑指南

本文提供RK3568开发板上RGMII网口调试的完整指南,涵盖硬件检查、设备树配置、驱动加载及性能优化。通过详细步骤和实战案例,帮助开发者避开常见陷阱,确保以太网功能稳定运行,特别关注PHY驱动和MDIO总线的调试技巧。

weixin_26821003的博客 321

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

RecyclerView下划线

MainActivity中设置下划线 RecyclerView re = (RecyclerView) findViewById(R.id.recyclerview); LinearLayoutManager layout = new LinearLayoutManager(this); re.addItemDecoration(new DividerItemDecoration

天然呆的人生若只如初见的博客 916

AST实战:解密Akamai混淆JS代码的完整流程

本文详细解析了如何使用AST技术解密Akamai混淆的JS代码,包括定位关键代码、AST解混淆实战步骤及常见问题解决方案。通过实际案例演示了从混淆代码到清晰逻辑的完整处理流程,并提供了工具推荐和法律合规建议,帮助开发者有效应对反爬虫技术。

weixin_33725722的博客 313

去除RecyclerView底部(最后一条)分割线

做了一个横向滑动的RecyclerView 使用自定义分割线 宽度为10dp 因为左右都有padding值 最后一条如果有分割线太丑 也不符合需求 解决 网上参考了一些方法 大多都是继承 ItemDecoration 重写其方法 然后在循环创建分割线的循环里减一 但是 我发现不管用 分割线还在那 似乎是因为宽度太宽引起的? 那就继续修改,在给分割线高度赋值的时候 判断如果是最后一条...

qq_38619138的博客 6121

从零部署DeepSeek V4 Flash:NVIDIA DGX Spark实战指南

GPU加速计算已成为现代人工智能基础设施的核心,其原理是通过并行处理架构大幅提升深度学习模型的训练与推理效率。在AI工程实践中,NVIDIA GPU凭借CUDA生态和专用驱动栈,为大规模语言模型部署提供了硬件基础。本文聚焦于企业级AI服务器部署场景,针对NVIDIA DGX Spark多节点系统的硬件初始化、驱动兼容性配置、容器化部署等关键环节,提供从系统层到应用层的完整解决方案。通过vLLM推理框架的实战配置,演示如何将DeepSeek V4 Flash模型高效部署于多GPU环境,涵盖Tensor Par

weixin_32296621的博客 377

Roboguide与TIA V16通讯

Roboguide与TIA V16通讯

haier123888的博客 2674

android中RecyclerView添加下划线

public class RecyclerViewDivider extends RecyclerView.ItemDecoration { private Paint mPaint; private Drawable mDivider; private int mDividerHeight = 2;//分割线高度,默认为1px private int mOrien

Dimples_54的博客 2108

MIMO-OFDM通信系统性能仿真及MATLAB实现

将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。

学习使你进步。 2216

android 给 recyclerview的item 添加下划线

// TODO: Use the ViewModel val viewManager = LinearLayoutManager(this.activity) val viewAdapter = ListNoteAdapter(arrayOf(Article(1,"","",""))) recycler_view.apply { setHasFixedSize(true) layoutManager = vie.

LYR 的博客 1198

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RecyclerView 添加下划线 Kotlin 教程 极速版

【代码】RecyclerView 添加下划线 Kotlin 教程 极速版。

丿灬安之若死 370

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RecyclerView之ItemDecoration在屏幕中增加下划线的一个小demo

首先,在activity中: localVideoRecycView.addItemDecoration(new GridItemDecorator(this)); localVideoRecycView.setLayoutManager(new GridLayoutManager(this, 3)); 调用ItemDecoration方法 class GridItemDecor

jikai9380的博客 958

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

recyclerView可能会遇到的几个问题

问题一:recyclerView导入后无法使用。 解决方法:在gradle里面 添加compile 'com.android.support:recyclerview-v7:23.4.0' 问题二:recyclerView的应用 解决方法:通过自定义适配器,继承RecyclerView.Adapter,重写这个类,然后在MainActivity里通过setLayoutManager绑

ghdmao的博客 1331

RecyleView下划线

【代码】RecyleView下划线。

qq_44203816的博客 152

RecyclerView,ItemDecoration进阶使用!!!

先来一波美女,养眼一发 写在开头 如果你现在还在用listview,gridview,那么我只能说,太out了。recyclerview现在使用的很普遍了已经,它不仅实现了他们俩的功能,还很方便的实现了横向列表,瀑布流列表等等!不过这些功能相信大部分人都知道,今天记录的是关于通过RecyclerView的ItemDecoration实现的一些进阶功能,从易到难包括如下: 1. I...

say_from_wen的博客 7960

android 的控件,Android控件

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?在 RecyclerView 中, 我们可以通过 recyclerView.addItemDecoration() 的方式添加 ItemDecoration ,比如下划线,字母索引等。使用自己实现 ItemDecoration ,只需要实现两个方法:123456789101112static class extends...

weixin_39898150的博客 132

RecycleView

Recycleview完全可以替代Listview及Gridview加载数据 首先用Recycleview来实现Listview的效果: //找到控件 recycle =(RecyclerView)findViewById(R.id.recycle); //加载布局 recycle.setLayoutManager(new LinearLayoutManager(ShuipingActivi

tuntunw的博客 253

RecyclerView强大的下划线---ItemDecoration

ItemDecoration类有三个主要的方法,分别如下: public void onDraw(Canvas c, RecyclerView parent, State state) public void onDrawOver(Canvas c, RecyclerView parent, State state) public void getItemOffsets(Rect outRe

zyl95的博客 1042

RecyclerView 底部下划线

public class DividerItemDecoration extends RecyclerView.ItemDecoration {           private static final int[] ATTRS = new int[]{                   android.R.attr.listDivider           };          

xiaozhang0414的博客 740

RecyclerView添加分割线

1,线性布局 - 1,引入 compile ‘com.android.support:recyclerview-v7:27.1.1’ - 2,xml布局 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;android.support.constraint.ConstraintLayout xmlns:android=

EleganceKing的博客 565
上一篇: 全局异常捕获器
下一篇: 跳转系统相机和相册
thecodeis6
博客等级 码龄9年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值