markdown 使用自定义ItemDecoration为Android RecyclerView GridLayoutManager提供相等的列间距

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 使用自定义ItemDecoration为Android RecyclerView GridLayoutManager提供相等的列间距相关的知识,希望对你有一定的参考价值。

### ItemOffsetDecoration

```java
public class ItemOffsetDecoration extends RecyclerView.ItemDecoration {

    private int mItemOffset;

    public ItemOffsetDecoration(int itemOffset) {
        mItemOffset = itemOffset;
    }

    public ItemOffsetDecoration(@NonNull Context context, @DimenRes int itemOffsetId) {
        this(context.getResources().getDimensionPixelSize(itemOffsetId));
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
            RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        outRect.set(mItemOffset, mItemOffset, mItemOffset, mItemOffset);
    }
}
```

### Implementation

In your source code, add ItemOffsetDecoration to your recyclerview.  
Item offset value should be half size of the actual value you want to add as space between items.
```java

mRecyclerView.setLayoutManager(new GridLayoutManager(context, NUM_COLUMNS);
ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(context, R.dimen.item_offset);
mRecyclerView.addItemDecoration(itemDecoration);

```

Also, set item offset value as padding for its recyclerview, and specify android:clipToPadding=false.
```
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview_grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:padding="@dimen/item_offset"/>
```

DONE. You will get an equal spaces around items.

以上是关于markdown 使用自定义ItemDecoration为Android RecyclerView GridLayoutManager提供相等的列间距的主要内容,如果未能解决你的问题,请参考以下文章

markdown 使用analytics.js的自定义维度

markdown 使用Drupal Console生成自定义模块

Markdown添加目录(自定义目录)

markdown 在wordpress中创建和使用自定义全局变量。

如何在 react-markdown 中使用自定义组件

如何使用 gatsby-transformer-remark 在 markdown 中获取自定义备注?