自從谷歌推出RecyclerView 以來,ListView 逐漸的淡出歷史舞臺,RecyclerView使用的越來越多,但是盡管RecyclerView有那么多的優(yōu)勢,但是我們在平時的使用中可能還是會遇到一些小問題。
- 給RecyclerView添加默認的分割線
RecyclerView 不像ListView那樣可以直接在布局的時候設(shè)置Divider,所以默認RecyclerView 是沒有分割線的,但是官方也是默認提供了添加的途徑的,方法如下:
addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
- 給RecyclerView 的item 添加點擊效果
RecyclerView 添加點擊效果不像ListView 直接在里面設(shè)置listSelector即可,RecyclerView 里面是沒有這個屬性的,而且你如果按照ListView的方法來添加很可能要失望,不過RecyclerView 的方法也簡單,最簡單的辦法就是在item中添加如下代碼:
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
- Recycleview 縱向間距設(shè)置
/**
* 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 宮格間距設(shè)置
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; //相當(dāng)于 設(shè)置 left padding
outRect.top = padding; //相當(dāng)于 設(shè)置 top padding
outRect.right = padding; //相當(dāng)于 設(shè)置 right padding
outRect.bottom = padding; //相當(dāng)于 設(shè)置 bottom padding
}
}