RecyclerVieW自定义华丽的分割线

来源:互联网 发布:linux python模块 编辑:程序博客网 时间:2024/05/19 12:15

RecyclerView因没有自带分割线所以需要我们自定义分割线,在这里提供了一个简单的实现分割线的方法
代码如下:

public class ItemDecoration extends RecyclerView.ItemDecoration{    private int mydevider;    private Paint dividerPaint;    public ItemDecoration(Context context) {        dividerPaint = new Paint();        //设置分割线颜色        dividerPaint.setColor(context.getResources().getColor(R.color.colorAccent));        //设置分割线宽度        mydevider = context.getResources().getDimensionPixelSize(R.dimen.divider_bottom);    }    @Override    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {        super.getItemOffsets(outRect, view, parent, state);        outRect.bottom = mydevider;    }    @Override    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {        int childCount = parent.getChildCount();        int left = parent.getPaddingLeft();        int right = parent.getWidth() - parent.getPaddingRight();        for (int i = 0; i < childCount - 1; i++) {            View view = parent.getChildAt(i);            float top = view.getBottom();            float bottom = view.getBottom() + mydevider;            c.drawRect(left, top, right, bottom, dividerPaint);        }    }}

首先我们需要创建一个类来继承RecyclerView.ItemDecoration这个抽象方法,
接下来就是在Activity中实例化这个类传入一个当前对象即可;
再用RecyclerView控件调用addItemDecoration()这个方法传入刚定义的类对象即可实现自定义分割线;
Activity类

   ItemDecoration itemDecoration=new ItemDecoration(MainActivity.this);   recyclerView.addItemDecoration(itemDecoration);

设置分割线的宽度是用到了一个dimen,只需要在res/values下新建一个dimen即可;
代码如下:

<?xml version="1.0" encoding="utf-8"?><resources>    <dimen name="divider_bottom">1dp</dimen></resources>

至此分割线就可以实现了= =

原创粉丝点击