이동식 저장소

ViewBinding 사용 시 레이아웃 크기가 wrap_content로 고정되는 문제 본문

Primary/Android

ViewBinding 사용 시 레이아웃 크기가 wrap_content로 고정되는 문제

해스끼 2020. 12. 21. 19:18

아이디만으로 쉽게 뷰에 접근할 수 있었던 ``Kotlin Android Extensions``는 ``RecyclerView``에서 사용할 때 매우 비효율적이며, 그 밖에도 코드 작성 시 여러 가지 문제점이 있어 최근에는 ``ViewBinding`` 사용을 권장하고 있다.

 

참고: Android Studio 4.1에서 제거된 Kotlin Android Extensions을 알아보자. (thdev.tech)


그런데 ``ViewBinding``을 사용하면 레이아웃이 약간 틀어지는 문제가 있다. 대표적으로 ``layout_width`` 혹은 ``layout_height``가 ``wrap_content``로 고정되는 문제. 분명히 ``match_parent``로 설정했음에도 불구하고 Layout Inspector로 보면 ``wrap_content``로 설정되어 있다.

분명히 설정했는데..

Inflate하는 코드를 다음과 같이 수정하면 문제를 해결할 수 있다. 정확히 어떤 매커니즘으로 문제가 생기는지는 잘 모르겠다.

# 이 코드를
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
    ViewHolder(ViewBinding.inflate(LayoutInflater.from(parent.context)))
        
# 이렇게 수정
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
    ViewHolder(ViewBinding.inflate(LayoutInflater.from(parent.context), parent, false))

 

Comments