一、前言
毫无疑问,RecyclerView 是 Android 中最重要的系统组件之一,它的出现就是为了高效代替 ListView 和 GridView。
今天,我们来讲讲 RecyclerView 中的静态内部类 ItemDecoration。顾名思义 ItemDecoration 就是 Item 的装饰,我们可以在 Item 的上下左右添加自定义的装饰,从而丰富 Item 的 UI 效果。
二、RecyclerView 基础知识
我们都知道 RecyclerView 里面就是一个又一个的 Item,但是其实这些 Item 外面包裹着一个矩形,只是我们再使用 RecyclerView 的时候 Left、Right、Top 和 Bottom 默认都是 0,所以我们看不到这些矩形,具体如下图所示:
三、DividerItemDecoration(系统提供)
我们都知道,使用 RecyclerView 时 ,我们不能像 ListView 那样通过 setDivider() 的方式来设置分割线,但是系统已经为我们提供了一个 DividerItemDecoration 类来设置分割线,这个类就是继承 RecyclerView.ItemDecoration,我们来看下源码:
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
public static final int HORIZONTAL = LinearLayout.HORIZONTAL;
public static final int VERTICAL = LinearLayout.VERTICAL;
private static final String TAG = "DividerItem";
private static final int[] ATTRS = new int[]{
android.R.attr.listDivider };
... ...
... ...
3.1、RecyclerView 简单使用
不设置分割线,效果如下所示:
3.2、使用 DividerItemDecoration 设置分割线
DividerItemDecoration 的使用非常简单,只需添加下面代码即可:
DividerItemDecoration decoration = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(decoration);
具体效果如下所示:
一般情况下以上 RecyclerView 的基本用法便可以实现绝大多数需求,但是某些场景下却远远不够,特别是需要实现比较复杂的 UI 效果的时候,所以这时候就需要利用 ItemDecoration,接下来我们就学习一下 ItemDecoration 的具体使用。
四、ItemDecoration 源码
首先,我们来看一下 ItemDecoration 的源码,这里的源码已经把注释和三个已经被弃用的方法去掉了,具体如下所示:
public abstract static class ItemDecoration