热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android:RecyclerView最简单优雅的添加分割线ItemDecoration

1、自定义分割线privateclassSpaceItemDecorationextendsRecyclerView.ItemDecoration{privateintmSpace

    先上结论:

    大家都知道 RecyclerView 默认是没有分割线的,我们可以用各种方式给 RecyclerView 添加上分割线,甚至可以简单粗暴的直接在布局文件中添加一条细线,但是大量的类似使用未免有些不方便并且让代码显得有些臃肿。


    如果只是需要简单的给一个最常用的垂直列表 RecyclerView 添加分割线,那么不用太麻烦,直接在给 RecyclerView 设置布局管理器(setLayoutManager)的同时使用下面一行代码添加分割线即可:

recyclerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));

    此时 RecyclerView 便会添加系统默认的灰色的分割线:



RecyclerView默认灰色的分割线

RecyclerView默认的灰色分割线


    如果你需要修改一下默认分割线的颜色,或者有的 Android 版本添加上面那一行代码分割线并没有出现,那么此时在该Activity所用的 Theme(styles.xml文件) 中添加 listDivider 属性并指定一个颜色即可:

@android:color/black

效果如下:



RecyclerView设置分割线颜色

RecyclerView设置分割线颜色


    通常一个项目的 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));



推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有