RecycleView分割线
使用:
//添加分割线
recyclewview.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
复制代码
源代码:
public class DividerItemDecoration extends RecyclerView.ItemDecoration {private static final int[] ATTRS = new int[]{android.R.attr.listDivider};public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;private Drawable mDivider;private int mOrientation;public DividerItemDecoration(Context context, int orientation) {final TypedArray a = context.obtainStyledAttributes(ATTRS);mDivider = a.getDrawable(0);a.recycle();setOrientation(orientation);}public void setOrientation(int orientation) {if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {throw new IllegalArgumentException("invalid orientation");}mOrientation = orientation;}@Overridepublic void onDraw(Canvas c, RecyclerView parent) {if (mOrientation == VERTICAL_LIST) {drawVertical(c, parent);} else {drawHorizontal(c, parent);}}public void drawVertical(Canvas c, RecyclerView parent) {final int left = parent.getPaddingLeft();final int right = parent.getWidth() - parent.getPaddingRight();final int childCount = parent.getChildCount();for (int i = 0; i < childCount; i++) {final View child = parent.getChildAt(i);final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();final int top = child.getBottom() + params.bottomMargin +Math.round(ViewCompat.getTranslationY(child));final int bottom = top + mDivider.getIntrinsicHeight();mDivider.setBounds(left, top, right, bottom);mDivider.draw(c);}}public void drawHorizontal(Canvas c, RecyclerView parent) {final int top = parent.getPaddingTop();final int bottom = parent.getHeight() - parent.getPaddingBottom();final int childCount = parent.getChildCount();for (int i = 0; i < childCount; i++) {final View child = parent.getChildAt(i);final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();final int left = child.getRight() + params.rightMargin +Math.round(ViewCompat.getTranslationX(child));final int right = left + mDivider.getIntrinsicHeight();mDivider.setBounds(left, top, right, bottom);mDivider.draw(c);}}@Overridepublic void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {if (mOrientation == VERTICAL_LIST) {outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());} else {outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);}}
}
复制代码
转载于:https://juejin.im/post/5b3ac852f265da62e060a231
RecycleView分割线相关推荐
- RecycleView 分割线设置及监听滚动状态
一.RecycleView 分割线 ListView中的分割线可以通过属性divider和dividerHeight分别设置颜色值/图片及分割线高度.而RecycleView并没有提供这两个属性设置分 ...
- RecycleView分割线设置
在网上看了一下,关于RecycleView分割线设置的办法,很多网友都是自定义设置,但是我遇到一个朋友说,客户说分割线太粗了,就算用0.5dp也还是很粗. 今天介绍一个框架,简单,方便. 在app b ...
- android 显示线方向,Android recycleview 分割线彩蛋
我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末.也欢迎各路大神门前来装X. 首先上问题 怎么做? 当我们空余时间 ...
- Android工具类的整理
文章目录 android开发的工具类 Acvitity的栈式管理工具 GlideUtils和ImageLoader] ImageSelector Json数据解析工具 ListView自适应高度的方法 ...
- 如何在php中添加音乐播放器,window_Win10自带Groove音乐播放器怎么使用?,《Groove音乐》是微软在Win10系 - phpStudy...
Win10自带Groove音乐播放器怎么使用? <Groove音乐>是微软在Win10系统上推出的一款最新的音乐播放器,从而替代了之前的Xbox Music.而今天<Groove音乐 ...
- Android RLT布局兼容注意事项
引 近期公司项目需要开拓阿拉伯市场,故需要在APP端兼容阿拉伯语. 阿拉伯语与其他多语言不同之处在于其布局是由右到左排布的,与我们常见的从左到右的布局不同.故需要修改部分代码的写法以兼容右到左布局. ...
- android开发搜集
1.自适应各种尺寸的图片配置 http://blog.csdn.net/luoyuhhy/article/details/6451901 搜索关键字:android 图片 自适应 分辨率 2.对话框: ...
- android_汇总
主题一: 「Android project nodes」 文章目录 主题一: 「Android project nodes」 一.环境配置及git托管 1.添加依赖的翻墙问题 2.Kotlin-And ...
- RecycleView 与 Elevation
RecycleView 以前一直用ListView,因为ListView可以搞定绝大部分需求.最近项目UI做了很大调整,需要宽度不同的Item混排,记录一下遇到的问题. 类似这样效果 宽度不同的Ite ...
最新文章
- 除了沉迷酒色之外,你还做过什么?
- 爬取了BOSS直聘、拉勾等近1000+招聘需求,总结出3年+Java开发的高频技术需求
- SQL Server使用sp_rename重命名约束注意事项
- mysql from_unixtime(_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME()
- python numpy数组切片_python中numpy数组切片实验解释
- java判断日文_java判断字符串是否中文、日文
- element ui 前台模板_element-ui 菜单模板封装(递归)
- NPN和PNP型传感器或开关如何接线?
- APP - 重磅消息!微信测试无需新手机号注册新微信号功能
- Android 针对华为手机调用裁剪出现圆形裁剪框的处理
- html页面宽度和高度,页面布局宽度和高度 网页设计合适的页面尺寸是多少
- Java接入支付宝支付(沙箱)
- 为什么RGB 与 CMYK的差异,会有所不同?
- 复盘苏宁收购红孩子案例——思考VC与垂直电商的未来
- 辰视智能董事长冯良炳博士接受起点机器人网专访!
- HTML+CSS大作业 使用html+css实现一个静态的汽车页面(含源码)
- html日期选择器小日历样式,超漂亮的网页 日期 时间选择器
- 二叉树(二)----->链式二叉树(上)
- 1814 简单的字符串查找
- 盘点 | 10大行业大数据应用痛点及解决策略
热门文章
- makefile讲义(1)——makefile基础(概述)
- SQL中的Where,Group By,Order By和Having的用法/区别
- AS3给图片加水印文字
- Git学习笔记07-删除文件
- 运行cmd直接进入指定目录下的命令
- 解密SSL流量,发现隐藏威胁
- 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理
- 使用maven下载依赖包及maven常见问题汇总
- 使用Redis分区将数据分割到多个Redis实例
- Exchange企业实战技巧(16)发布SMTP、POP、IMAP连接信息设置