RecyclerView 分割线
时间: 2023-11-16 14:54:02 浏览: 32
RecyclerView 分割线可以通过设置 ItemDecoration 来实现。具体步骤如下:
1. 自定义一个类继承自 RecyclerView.ItemDecoration。
2. 在该类的构造方法中,初始化分割线的样式和颜色等属性。
3. 重写 getItemOffsets() 方法,在该方法中设置每个 ItemView 应该留出的空间大小,即分割线的大小。
以下是一个示例代码:
```java
public class MyDividerItemDecoration extends RecyclerView.ItemDecoration {
private Drawable mDivider;
public MyDividerItemDecoration(Context context) {
mDivider = ContextCompat.getDrawable(context, R.drawable.divider);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.bottom = mDivider.getIntrinsicHeight();
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
int top = child.getBottom() + params.bottomMargin;
int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
}
```
在上面的代码中,我们使用了一个名为 divider 的 Drawable 来作为分割线的样式,然后在 getItemOffsets() 方法中设置了每个 ItemView 应该留出的空间大小,即分割线的高度。最后在 onDraw() 方法中绘制分割线。