搜索
您的当前位置:首页正文

Android 给GridLayoutManager recycle 设置item间距

来源:好走旅游网

public class ItemOffsetDecoration  extends RecyclerView.ItemDecoration {
    private int spacing;

    public ItemOffsetDecoration(int spacing) {
        this.spacing = spacing;
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        int position = parent.getChildAdapterPosition(view);
        int spanCount = ((GridLayoutManager) parent.getLayoutManager()).getSpanCount();
        int itemCount = parent.getAdapter().getItemCount();

        int column = position % spanCount;
        // 第一行
        if (position < spanCount) {
            outRect.top = spacing;
       }
        if (column == 0) {
            outRect.left = spacing;
            outRect.right = spacing / 2;
        } else if (column == spanCount - 1) {
            outRect.right = spacing;
            outRect.left = spacing / 2;
        } else {
            outRect.left = spacing / 2;
            outRect.right = spacing / 2;
            outRect.top = spacing;
        }

        // 最后一行
        if (position >= itemCount - spanCount) {
           outRect.bottom = spacing;
        }
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top