Android

부모뷰 영역을 넘어 자식뷰를 그리는법 Clipchildren 그리고 한계

Dean83 2023. 3. 8. 08:33

화면을 구성하다 보면, 가끔 부모부의 영역을 넘어 자식뷰를 그려야 할 때가 있다. 

 

즉, 부모뷰의 너비, 높이가 100 이고, 자식뷰가 200일 경우, 원래대로라면 자식뷰도 

 

100,100 씩만 그리고 나머지 부분은 보이지 않는다. 

 

자식뷰가 부모뷰의 100,100 영역을 벗어나 모두 그리려면, 부모layout에 clipchildren = false

 

로 설정하면 된다.  

 

 

보통은, RecyclerView 에서도 사용하고 싶을때가 많을것이다. 

 

RecyclerView 의 item layout 에도 clipchildren 을 설정해야 하지만, RecyclerView 자체에도

 

설정을 해 주어야 한다. 

 

 

*clipchildren 은 만능이 아니다. 결국은 최 상단 레이아웃의 Canvas 영역을 벗어나서 그릴 수는 없다. 

즉, RecyclerView 에서 하나의 레이아웃이 차지하는 영역을 벗어나서는 그리지 못한다는 이야기 이다.

 

빨간 레이아웃을 온전히 표시하지 못하고 잘린다. 

이를 해결하기 위해선 2가지 방법이 있다.
1. 주황색 아이템뷰의 영역을 넉넉히 잡으면(빨간 레이아웃 전체영역 이상), 빨간색 레이아웃 표현이 잘 된다.
    -> 단, 이 경우 리사이클러뷰 에서 한 아이템이 차지하는 영역이 같이 넒어진다. 

2. 주황색 아이템뷰를 하나씩 표현하지 말고, 2개의 묶음으로 표시한다. 
    -> 즉, 현재 4개의 주황색 레이아웃을 2개씩 묶어서, 총 2개의 주황색 레이아웃으로 병합한다.
    -> 이 경우, 빨간색 레이아웃을 정상적으로 표시할 수 있고, 화면상으로도 보이는 영역이 들쭉날쭉하지 않고 잘 보인다. 
    -> 다만, 성능상 이슈가 있을 수 있다.
    

'Android' 카테고리의 다른 글

JSONObject, JsonObject  (0) 2023.04.14
UseCase  (0) 2023.01.26
안드로이드 전반적 개발 패턴, 구조 (feat repository)  (0) 2023.01.26
SharedPreference  (0) 2023.01.26
ViewModel 생성법 2가지  (0) 2023.01.26