마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그리드레이아웃 양쪽 끝 마진 없이 사이마진주기

0 추천
리사이클러뷰 그리드 적용되어있는데, 양쪽 끝마진 빼고, 사이 마진만 주려면 어떻게 해야되는건가요?
수원통학러 (3,570 포인트) 님이 2022년 1월 11일 질문

1개의 답변

0 추천

레이아웃를 잘 조정해 보시던가 아니면 ItemDecorator클래스를 하나 만들어 보세요.

public class ItemSpaceDecoration extends RecyclerView.ItemDecoration {

    private final int spaceInPixel; 
    private final boolean includeLastItem;

    public ItemSpaceDecoration(int spaceInPixel, boolean includeLastItem) {
        this.spaceInPixel = spaceInPixel;
        this.includeLastItem = includeLastItem;
    }

    public ItemSpaceDecoration(int spaceInPixel) {
        this(spaceInPixel, false);
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
            RecyclerView.State state) {
        if (!includeLastItem && parent.getChildAdapterPosition(view) != parent.getAdapter().getItemCount() - 1) {
            outRect.bottom = verticalSpaceHeight;
        }        
        outRect.bottom = spaceInPixel;
    }
}


recyclerView.addItemDecoration(new ItemSpaceDecoration());

 

위 클래스는 Vertical 만 동작하니 Horizontal로 동작하게 하려면 outRect.bottom이 아니라 outRect.right를 조절하시면 될 것 같네요. 

spark (227,470 포인트) 님이 2022년 1월 11일 답변
...