没有ItemDecoration的StaggeredGridLayoutManager

时间:2015-08-24 13:48:03

标签: android

没有ItemDecoration的StaggeredGridLayoutManager需要onScroll以矩阵/网格格式排列项目。有没有办法避免ItemDecoration,因为我不希望项目之间有装饰器。

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)) 
//Without addItemDecoration - it requires a scroll to occupy all the columns
recycler.addItemDecoration(new CustomInsetsDecoration(context));

没有项目装饰 -

A
B
C
D
E
F

项目装饰(分开最小1px / dp)

A B C
D E F

我想要的是什么:

ABC
DEF

A,B,C,D,E,F都是ImageViews(不同大小)

我的项目布局 - 非常简单 - relativelayout和Imageview:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/item_browse_cover"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop" />

</RelativeLayout>

任何输入都表示赞赏。 提前致谢。

1 个答案:

答案 0 :(得分:0)

使用以下带有0边距的MarginDecorator

public class MarginDecorator extends RecyclerView.ItemDecoration {

    private int margin;

    public MarginDecorator(int margin) {
        this.margin = margin;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.top = margin;
        outRect.bottom = margin;
        outRect.left = margin;
        outRect.right = margin;
    }
}

也可以尝试使用setGapStrategy()