[안드로이드, Java] 리사이클뷰 아이템 마진 적용하기, RecyclerView Item Margin

2022. 8. 3. 23:27·이전 게시글/공부 관련

제목 : 리사이클뷰 아이템 마진 적용하기, RecyclerView Item Margin

 


문제

프레그먼트에 리사이클뷰를 넣어서 리스트를 만들었는데 만들고 보니 아이템들이 따닥따닥 붙어있었다. 그래서 margin prams를 사용해서 했더니 안되어서 다른 방법을 찾아보다가 데코레이션을 써야한다고 한다

 


방법

데코레이션 클래스 만들기

 

Decoration 클래스를 하나 만든다. 이름은 아무렇게나 하면 된다

 

데코레이션 클래스 설정

 

새로 만든 클래스에 RecycleView.ItemDecoration을 extends하고 생성자로 Context context를 받아온다음

Ctr + O를 눌러 getItemOffsets를 생성한다

그리고 아래 코드 처럼 작성하면 위 사진처럼 margin이 적용된 것 처럼 쓸 수 있다

 

package com.zynar.starvoca.recyclerview;

import android.content.Context;
import android.graphics.Rect;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.zynar.starvoca.R;

public class PostItemDecoration extends RecyclerView.ItemDecoration {

    private int size;

    public PostItemDecoration(Context context) {
        this.size = context.getResources().getDimensionPixelSize(R.dimen.words_margin);
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        outRect.bottom = size;
        outRect.top = size;
    }
}

 

생성자로 context를 받아온 이유는 프레그먼트의 requreContext()를 받아서 픽셀을 구하는 함수를 사용해야한다 getResources().getDimensionPixelSize() 사용하기 위함이다. 이것은 나중에 여백의 간격이 된다

 

getItemOffsets의 인자들은 나도 잘 모른다 그냥 ctr + o하니까 자동으로 생성된거다

outRect의 top과 bottom을 size로 넣어주면 여백이 만들어진다

 

리사이클뷰 적용하기

그리고 리사이클뷰를 어댑터와 적용하는 코드로 가서 setAdapter() 전에 해당 데코레이션을 적용시켜주면된다

 

PostItemDecoration decoration = new PostItemDecoration(requireContext());
rvList.addItemDecoration(decoration);

 


참고 링크

https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ItemDecoration

 

RecyclerView.ItemDecoration  |  Android Developers

androidx.car.app.managers

developer.android.com

https://youtu.be/AtzJUDvRktI


 

저작자표시 (새창열림)

'이전 게시글 > 공부 관련' 카테고리의 다른 글

[프로그래머스 Level 1, Java] 평균 구하기  (0) 2022.08.04
[프로그래머스 Level 1, Java] 정수 제곱근 판별  (0) 2022.08.04
[프로그래머스 Level 2, C++] 최댓값과 최솟값  (0) 2022.08.03
[안드로이드, Java] View 동적으로 addView() 하고 마진 적용 하는 방법  (0) 2022.08.02
[프로그래머스 Level 2, C++] 가장 큰 수  (0) 2022.07.29
'이전 게시글/공부 관련' 카테고리의 다른 글
  • [프로그래머스 Level 1, Java] 평균 구하기
  • [프로그래머스 Level 1, Java] 정수 제곱근 판별
  • [프로그래머스 Level 2, C++] 최댓값과 최솟값
  • [안드로이드, Java] View 동적으로 addView() 하고 마진 적용 하는 방법
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • f1tenth (2)
      • 이전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    캡스톤디자인
    파이어베이스
    빅데이터공모전
    파이썬
    티스토리HTML
    이것이자바다연습문제
    C++강좌
    C언어강좌
    자바
    마인크래프트
    백준
    티스토리반응형2스킨편집
    콜라츠추측
    안드로이드
    반복하지않는수
    공개SW개발자대회
    이것이자바다확인문제
    프로그래머스PCCE
    티스토리스킨편집
    프로그래머스
    c언어초보
    스크롤바CSS
    마인크래프트강화스크립트
    이것이자바다
    일본규슈공업대학교
    C언어
    마크
    마크스크립트
    마인크래프트스크립트
    컨텍스트스위칭
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[안드로이드, Java] 리사이클뷰 아이템 마진 적용하기, RecyclerView Item Margin
상단으로

티스토리툴바