1. 程式人生 > >RecyclerView使用GridLayoutManager間距設定

RecyclerView使用GridLayoutManager間距設定

使用RecyclerView設定間距,需要重寫RecyclerView.ItemDecoration這個類。有如下的效果圖需要實現,間距只有中間的格子和底部的格式之間有。


實現方法很簡單,因為這個效果是每一行有3個格子,只要每行的第一個格式左邊間距為0即可以。其他都設定左邊距和底部距離。 程式碼如下:
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {

    private int space;

    public SpaceItemDecoration(int space) {
        this.space = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        //不是第一個的格子都設一個左邊和底部的間距
        outRect.left = space;
        outRect.bottom = space;
        //由於每行都只有3個,所以第一個都是3的倍數,把左邊距設為0
        if (parent.getChildLayoutPosition(view) %3==0) {
            outRect.left = 0;
        }
    }

}
然後執行:
int space = getResources().getDimensionPixelSize(R.dimen._10dp);
mRecyleView.addItemDecoration(new SpacesItemDecoration(this, space));