RecyclerView去除底部分割线
来源:互联网 发布:zk 集群通讯端口 编辑:程序博客网 时间:2024/05/22 05:01
RecyclerView 默认的分割线DividerItemDecoration 在最后一个item显示的时候也会有一个分割线,影响应用整体的美观。
通过DividerItemDecoration 源码发现分割线的行数是通过childCount来判断的,而childCount正是我们分割线的个数,那去除最后一个分割线也就简单了。
public void drawHorizontal(Canvas c, RecyclerView parent) { 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.getLeft() - params.leftMargin; final int right = child.getRight() + params.rightMargin + mDivider.getIntrinsicWidth(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } public void drawVertical(Canvas c, RecyclerView parent) { 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.getTop() - params.topMargin; final int bottom = child.getBottom() + params.bottomMargin; final int left = child.getRight() + params.rightMargin; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } }
我们只需要重写一个类,把childCount 改为childCount-1,那此问题就解决了。
public void drawHorizontal(Canvas c, RecyclerView parent) { int childCount = parent.getChildCount(); for (int i = 0; i < childCount-1; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int left = child.getLeft() - params.leftMargin; final int right = child.getRight() + params.rightMargin + mDivider.getIntrinsicWidth(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } public void drawVertical(Canvas c, RecyclerView parent) { final int childCount = parent.getChildCount(); for (int i = 0; i < childCount-1; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int top = child.getTop() - params.topMargin; final int bottom = child.getBottom() + params.bottomMargin; final int left = child.getRight() + params.rightMargin; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } }
0 0
- RecyclerView去除底部分割线
- 10.如何完美的去除RecyclerView底部分割线
- 去除tableView底部分割线和顶部header
- 一句话去除UITableView底部多余行及分割线
- 一句话去除UITableView底部多余行及分割线
- 去除UITableView底部多余行及分割线
- 去除UITableView底部多余行及分割线
- iOS之去除UITableView底部多余行及分割线
- RecyclerView分割线
- RecyclerView分割线详解
- RecyclerView分割线
- RecyclerView虚线分割线
- Android Recyclerview分割线
- RecyclerView(实现分割线)
- RecyclerView万能分割线
- recyclerview分割线 -总结
- RecyclerView分割线
- RecyclerView分割线
- 图像分割--使用迭代算法的全局阈值处理
- 正则表达式
- 希拉里2016败选演说
- JS之事件委托实例
- 前端上传图片并预览图片
- RecyclerView去除底部分割线
- Elasticsearch Alias第一篇 Index Alias
- 系统定位
- git:cannot open git-upload-pack
- oracle-----闪回技术
- 开机自检,BIOS运行原理
- Eclipse使用Maven时building workspace 卡住。
- 带你玩转Visual Studio——带你管理多种释出版本
- 微信 关注/取消关注事件