Предмет украшения добавляет двойное пространство
У меня есть вид переработчика, где я хочу добавить пространство между ячейками. Использование кода ниже работает, однако, в середине пространство удваивается.
Как я могу расставить их и избежать двойного пробела в середине?
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;
}
}
}