作者: | 来源:互联网 | 2023-09-18 01:52
1、自定义分割线privateclassSpaceItemDecorationextendsRecyclerView.ItemDecoration{privateintmSpace
先上结论:
大家都知道 RecyclerView 默认是没有分割线的,我们可以用各种方式给 RecyclerView 添加上分割线,甚至可以简单粗暴的直接在布局文件中添加一条细线,但是大量的类似使用未免有些不方便并且让代码显得有些臃肿。
如果只是需要简单的给一个最常用的垂直列表 RecyclerView 添加分割线,那么不用太麻烦,直接在给 RecyclerView 设置布局管理器(setLayoutManager)的同时使用下面一行代码添加分割线即可:
recyclerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
此时 RecyclerView 便会添加系统默认的灰色的分割线:
如果你需要修改一下默认分割线的颜色,或者有的 Android 版本添加上面那一行代码分割线并没有出现,那么此时在该Activity所用的 Theme(styles.xml文件) 中添加 listDivider 属性并指定一个颜色即可:
- @android:color/black
效果如下:
通常一个项目的 Activity 所用的 Theme 都是统一的,此处设置好后,每次 RecyclerView 需要添加分割线时只需一行代码即可搞定。如果你对分割线还有更高的要求,且听下文分解。
1、自定义分割线
private class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private int mSpace;
public SpaceItemDecoration() {
float density = getResources().getDisplayMetrics().density;
this.mSpace = (int) (20 * density + 0.5f);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (parent.getChildAdapterPosition(view) % spanCount == 0) {
outRect.left = mSpace;
}
}
}
2、
rvList.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration divider = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
divider.setDrawable(new ColorDrawable(Color.BLACK));
//RecyclerView添加分割线
rvList.addItemDecoration(divider);
DividerItemDecoration divider = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
divider.setDrawable(getResources().getDrawable(R.drawable.shape_recycler_divider));
//RecyclerView添加分割线
rvList.addItemDecoration(divider);
3、
rvList.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));