Kotlin, JAVA 리사이클러 뷰 아이템 숨기기시에 공간이 그대로 남아 있는 현상
리사이클러뷰에서 visibility = View.GONE 속성을 사용해서 뷰 내용을 숨기려고 했지만 마음대로 되지 않았다.
위의 예시처럼 view1를 숨겼을 경우 오른쪽 그림처럼 2,3,4만 보여야 하는데 왼쪽처럼 1의 내용은 사라진채 공간만 그대로 차지하고 있었다.
당최 문제가 고쳐지지 않아서 검색하고 이것저것 고쳐보기를 세시간 동안이나 했다.. 젠장
정확히는 잘 모르겠지만 안드로이드의 버그라고 한다. 스택 오버 플로우의 댓글에서 알게 되었는데 애초에 답글이 햇수로 9년전 글이라서 이건 아니겠지.. 하고 넘겼던게 오랫동안 삽질을 한 원인이다
setVisibility(GONE) view becomes invisible but still occupies space
I've got a view that is effectively is a button. Here is its XML layout (add_new.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
stackoverflow.com
댓글에서는 간단하게 해결책을 제시하고 있다.
리사이클러뷰에 들어갈 아이템 뷰어의 코드들을 레이아웃을 하나 추가하여 감싸준 뒤 해당 레이아웃의 visibility를 GONE로 설정하는 것이다. 혹시나 하고 기본적으로 있던 constraintLayout 을 GONE 해보았으나 해결되지 않았고 반드시 레이아웃을 하나 더 감싸 주어야 한다.. ㅡㅡ
실제로 내 프로젝트에 사용중인 뷰어의 xml 구조이다. 기존에는 lyt_baedal_confirm 이라는 레이아웃 없이 바깥쪽 레이아웃만 있었는데 이 레이아웃을 추가하여 문제를 해결했다.
오늘의 교훈: 오래된 지식이더라도 내 마음대로 쓸모없다고 단정짓지 말자..