gistfile1.txt /** * RecyclerView的间距类 */ class MyGridItemDecoration extends RecyclerView.ItemDecoration { /** * @param outRect 边界 * @param view recyclerView ItemView * @param parent recyclerView * @param state recycler 内部数据
/**
* RecyclerView的间距类
*/
class MyGridItemDecoration extends RecyclerView.ItemDecoration {
/**
* @param outRect 边界
* @param view recyclerView ItemView
* @param parent recyclerView
* @param state recycler 内部数据管理
*/
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
//设定底部边距为1px
//当前位置
int position = parent.getChildAdapterPosition(view);
RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
//列数
int spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
//总数
int itemCount = parent.getAdapter().getItemCount();
if(!isLastLine(position, spanCount, itemCount)) {
outRect.set(0, 0, 0, CommonUtils.dip2px(getActivity(), 26));
}
}
/**
* 是否是最后一行
* @param position 位置
* @param spanCount 列数
* @param itemCount 总数
*/
private boolean isLastLine(int position, int spanCount, int itemCount) {
int maxLine;
if(itemCount % spanCount == 0) {
maxLine = itemCount / spanCount;
} else {
maxLine = itemCount / spanCount + 1;
}
int posLine;
if((position + 1) % spanCount == 0) {
posLine = (position + 1) / spanCount;
} else {
posLine = (position + 1) / spanCount + 1;
}
if(posLine == maxLine) {
return true;
} else {
return false;
}
}
}
