Предмет украшения добавляет двойное пространство

У меня есть вид переработчика, где я хочу добавить пространство между ячейками. Использование кода ниже работает, однако, в середине пространство удваивается.

Как я могу расставить их и избежать двойного пробела в середине?

public class ItemDecorationAlbumColumns extends RecyclerView.ItemDecoration {
    private int space;

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

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

        // Add top margin only for the first item to avoid double space between items
        if(parent.getChildAdapterPosition(view) == 0) {
            outRect.top = space;
        }
    }
}

Вызов:

recyclerView.addItemDecoration(new ItemDecorationAlbumColumns(50));

1 ответ

Решено с помощью кода ниже:

public class ItemDecorationAlbumColumns extends RecyclerView.ItemDecoration {
    private int space;

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

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

        if(parent.getChildAdapterPosition(view) % 2 == 0) {
            outRect.right = space;
            outRect.bottom = space;
            outRect.left = space/2;
        } else {
            outRect.left = space;
            outRect.right = space/2;
            outRect.bottom = space;
        }

        if(parent.getChildAdapterPosition(view) == 0) {
            outRect.top = space;
            outRect.left = space;
        }
    }
}
Другие вопросы по тегам