본문 바로가기

안드로이드/안드로이드 디버깅

[디버깅] 리사이클러뷰 아이템이 제대로 나오지 않는 문제

문제점

리사이클러뷰 아이템이 제대로 나오지 않는 경우는 굉장히 많을텐데 이번에는 좀 특이 케이스인 것 같다. recycler_view의 height를 0dp를 하면 이상하게 나오고, wrap_content를 사용하면 제대로 나온다. 어답터로는  Jetpack의 ListAdapter를 사용했다. RecyclerView.Adapter로 수행해도 같은 문제가 반복돼서 그 어답터 문제는 아니라고 판단했었다.

 

좌측 정상(wrap_content) 우측 비정상(0dp)

비정상(CardView > Constraint > RecyclerView(Height=0dp))

카드뷰 하위 레이아웃을 Constraint layout을 사용하고 그 하위에 recyclerview의 높이를 0dp로 지정

정상(CardView > Constraint > RecyclerView(Height=wrap_contents))

카드뷰 하위 레이아웃을 Constraint layout을 사용하고 그 하위에 recyclerview의 높이를 wrap_contents로 지정

 

근데 정상이긴 해도 리사이클러뷰가 꽉 채워지는걸 원했다.

최종 이상적인 정상(CardView > Linear Layout> RecyclerView(Height=0dp, layout_weight = 1))

카드뷰 하위 레이아웃을 리니어 레이아웃를 사용하고 그 하위에 recyclerview의 높이를 0dp, layout_weight을 1로 지정

 

왜 Constraint Layout에서는 안되는지 잘 모르겠다. 이문제로 7시간 가량 소요됐다. 로직 영역에서 문제가 계속해서 발생하고 이유를 모르겠다면 xml에 문제가 종종 있는거 같다.