본문 바로가기
안드로이드

[Android] 다이얼로그 뷰바인딩 wrap_content 고정되는 문제 해결

by 코딩히어로 2022. 9. 23.
728x90

1


안드로이드에서는 뷰 바인딩이라는 아주 편리하고도 강력한 기능이 있는데

다이얼로그 layout에서 아무리 layout_width, layout_height의 크기를 정하고

match_parent로 지정을 하여도 ViewBinding을 이용해서 inflate를 하면 크기가

wrap_content로 고정되어 다이얼로그가 원하는 대로 출력되지 않습니다

먼저 다이얼로그 뷰바인딩에 대한 방법은 이전 포스팅에서 확인하실 수 있습니다

 

2022.09.23 - [안드로이드] - [Android] Dialog layout ViewBinding 사용하기

 

[Android] Dialog layout ViewBinding 사용하기

이전 포스팅에서 Activity layout을 뷰 바인딩 방식으로 사용하는 방법에 대해 글을 작성했습니다 Activity도 ViewBinding방식으로 사용하는데 내가 만든 다이얼로그 layout도 이러한 방식으로 사용하면 너

codinghero.tistory.com

 

여러 블로그들에서 찾은 결과 viewGroup을 이용해서 접근을 하라는 말들 뿐

실질적으로 따라 해 보아도 다이얼로그의 크기는 wrap_content로 고정됐습니다

 

그러다 inflate는 결국 화면을 그려주는 작업인데 inflate에서 wrap_content로 고정이 될 것이고

결국 답은 화면을 그리는 과정에서 최소 width와 height의 크기를 정해버리면

inflate는 최소 크기 이상으로 맞추어서 view를 구성할 것이라는 결론에 도달합니다

 

confirmBinding = DialogConfirmBinding.inflate(getLayoutInflater());
setContentView(confirmBinding.getRoot());

 

위 코드가 ViewBinding을 할 때 inflate를 통해 화면을 구성하는 코드입니다

여기에서 보면 알 수 있듯이 setContentView 쪽에 inflate로 화면을 구성한 confirmBinding클래스의

getRoot로 접근을 하기 때문에 setContentView 전에 confirmBinding의 Root로 접근해서

width와 height의 최소 크기를 픽스합니다

 

confirmBinding = DialogConfirmBinding.inflate(getLayoutInflater());
confirmBinding.getRoot().setMinimumWidth(1000);
confirmBinding.getRoot().setMinimumHeight(700);
setContentView(confirmBinding.getRoot());

 

위 코드에서 볼 수 있듯이 setMinimumWidth와 setMinimumHeight를 설정한 뒤에

setContentView를 통해 구성된 화면을 뿌려주기 때문에 원하는 크기로 다이얼로그를 그릴 수 있습니다

728x90
반응형

댓글