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>
至此分割线就可以实现了= =
RecyclerView分割线
最新推荐文章于 2023-04-18 17:56:01 发布