自从谷歌推出RecyclerView 以来,ListView 逐渐的淡出历史舞台,RecyclerView使用的越来越多,但是尽管RecyclerView有那么多的优势,但是我们在平时的使用中可能还是会遇到一些小问题。
- 给RecyclerView添加默认的分割线
RecyclerView 不像ListView那样可以直接在布局的时候设置Divider,所以默认RecyclerView 是没有分割线的,但是官方也是默认提供了添加的途径的,方法如下:
addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
- 给RecyclerView 的item 添加点击效果
RecyclerView 添加点击效果不像ListView 直接在里面设置listSelector即可,RecyclerView 里面是没有这个属性的,而且你如果按照ListView的方法来添加很可能要失望,不过RecyclerView 的方法也简单,最简单的办法就是在item中添加如下代码:
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
- Recycleview 纵向间距设置
/**
* linearlayout item 纵向分割器
*/
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
int mSpace;
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.left = mSpace;
outRect.right = mSpace;
outRect.bottom = mSpace;
if (parent.getChildAdapterPosition(view) == 0) {
outRect.top = mSpace;
}
}
public SpaceItemDecoration(int space) {
this.mSpace = space;
}
}
- Recycleview 宫格间距设置
public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration {
private int padding;
public GridSpaceItemDecoration(Context context, int space) {
padding = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
//outRect就是你那个item条目的矩形
outRect.left = padding; //相当于 设置 left padding
outRect.top = padding; //相当于 设置 top padding
outRect.right = padding; //相当于 设置 right padding
outRect.bottom = padding; //相当于 设置 bottom padding
}
}