RecyclerView底部分割线去除的方法

 更新时间:2020年07月23日 11:07:29   作者:Pichsofts  
如何完美的去除RecyclerView底部分割线?这篇文章主要为大家详细介绍了RecyclerView底部分割线去除的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

概述

之前我们抛出了一个问题就是RecyclerView在显示列表的时候,最底部也就是最后一个Item后面还有分割线,这大大影响界面的美观。这篇文章就是解决这个问题的。

自定义分割线

通过分析源码后我们发现没有相关的方法来处理这一需求,所以只能自定义分割线,通过上一篇文章的基础我们知道肯定是修改getItemOffsets。那我们的思路是让这个方法在到最后一个条目时,不偏移分割线的间隙。同时也要修改onDraw方法,让他不再绘制最后一条分割线。

private void drawHorizontal(Canvas c, RecyclerView parent, State state) {
 int childCount = parent.getChildCount() - 1;
 int left = 0;
 int top = parent.getPaddingTop();
 int right = 0;
 int bottom = parent.getHeight() - parent.getPaddingBottom();
 for (int i = 0; i < childCount; i++) {
 View view = parent.getChildAt(i);
 RecyclerView.LayoutParams params = (LayoutParams) view.getLayoutParams(); //考虑,padding
 left = view.getRight();
 right = left + divider.getIntrinsicHeight(); //我们在自定义drawable的是是,写死了高度,所以只能用高度
 divider.setBounds(left, top, right, bottom);
 divider.draw(c);
 }
}

/**
 * 思路:就是获取每个item,计算divider的left,top,right,bottom
 */
private void drawVertical(Canvas c, RecyclerView parent, State state) {

 int childCount = parent.getChildCount() - 1;
 int left = parent.getPaddingLeft();
 int top = 0;
 int right = parent.getWidth() - parent.getPaddingRight(); //考虑右边的padding
 int bottom = 0;
 for (int i = 0; i < childCount; i++) { //不绘制最后一个条目的分割线
 View view = parent.getChildAt(i);
 RecyclerView.LayoutParams params = (LayoutParams) view.getLayoutParams(); //考虑,padding
 top = view.getBottom() + params.topMargin; //就是当前view底部到顶部的距离
 bottom = top + divider.getIntrinsicHeight() - params.bottomMargin; //就是top+divider高度
 divider.setBounds(left, top, right, bottom);
 divider.draw(c);
 }
}

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
 int childAdapterPosition = parent.getChildAdapterPosition(view);

 int lastCount = parent.getAdapter().getItemCount() - 1;

 //如果当前条目与是最后一个条目,就不设置divider padding
 if (childAdapterPosition == lastCount) {
 outRect.set(0, 0, 0, 0);
 return;
 }

 Log.d("TAG", childAdapterPosition + "," + lastCount);
 if (orientation == LinearLayoutCompat.HORIZONTAL) {
 outRect.set(0, 0, divider.getIntrinsicHeight(), 0); //0,0,30,0,设置宽度
 } else {
 outRect.set(0, 0, 0, divider.getIntrinsicHeight()); //0,0,0,30,设置高度
 }

}

使用这个自定义分割线的效果图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android开发多手指触控事件处理

    Android开发多手指触控事件处理

    这篇文章主要为大家介绍了Android开发多手指触控事件处理教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 详解Android中AsyncTask的使用方法

    详解Android中AsyncTask的使用方法

    本篇文章主要介绍了Android中AsyncTask的使用方法,有兴趣的同学可以了解一下。
    2016-11-11
  • Android创建Menu菜单实例

    Android创建Menu菜单实例

    这篇文章主要介绍了Android创建Menu菜单实例,讲述了Android菜单项的创建方法,在Android应用程序开发中非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • Android毕业设计记事本APP

    Android毕业设计记事本APP

    这篇文章主要介绍了一个Android毕业设计记事本APP,它是一款轻量级的便签工具,使用Java语言开发,风格简练,可实现便签的添加、删除、修改、查看功能
    2021-08-08
  • android银行卡号验证算法详解

    android银行卡号验证算法详解

    这篇文章主要介绍了android银行卡号的验证算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Android中Activity常用功能设置小结(包括全屏、横竖屏等)

    Android中Activity常用功能设置小结(包括全屏、横竖屏等)

    这篇文章主要介绍了Android中Activity常用功能设置小结(包括全屏、横竖屏等),以简单实例形式分析了Android实现全屏、竖屏及一直显示等的技巧与注意事项,需要的朋友可以参考下
    2015-10-10
  • Android控件SeekBar仿淘宝滑动验证效果

    Android控件SeekBar仿淘宝滑动验证效果

    这篇文章主要为大家详细介绍了Android控件SeekBar仿淘宝滑动验证效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android简单封装一个MVP基类流程详解

    Android简单封装一个MVP基类流程详解

    MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。下面这篇文章主要给大家介绍了关于Android从实现到封装MVP的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
    2023-03-03
  • Android屏幕手势检测的实现代码

    Android屏幕手势检测的实现代码

    这篇文章主要介绍了Android屏幕手势检测的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • Android优质索尼滚动相册

    Android优质索尼滚动相册

    这篇文章主要介绍了Android优质索尼滚动相册,桌面小部件滚动相册,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09

最新评论