안드로이드에서는 뷰 바인딩이라는 아주 편리하고도 강력한 기능이 있는데
다이얼로그 layout에서 아무리 layout_width, layout_height의 크기를 정하고
match_parent로 지정을 하여도 ViewBinding을 이용해서 inflate를 하면 크기가
wrap_content로 고정되어 다이얼로그가 원하는 대로 출력되지 않습니다
먼저 다이얼로그 뷰바인딩에 대한 방법은 이전 포스팅에서 확인하실 수 있습니다
2022.09.23 - [안드로이드] - [Android] Dialog layout ViewBinding 사용하기
여러 블로그들에서 찾은 결과 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를 통해 구성된 화면을 뿌려주기 때문에 원하는 크기로 다이얼로그를 그릴 수 있습니다
'안드로이드' 카테고리의 다른 글
[Android] Manifest merger failed with multiple errors 해결 (2) | 2022.10.06 |
---|---|
[Android] ProgressBar 막대 색상 변경 (2) | 2022.09.27 |
[Android] Dialog layout ViewBinding 사용하기 (1) | 2022.09.23 |
[Android] EditText 입력 끝나는 시점에 이벤트 받기 (10) | 2022.09.23 |
[Android] this and base files have different roots 에러해결 (1) | 2022.09.23 |
댓글