DialogFragment에서 상태바 완전 투명하게 만들기
안드로이드 공부를 하다가 JetPack의 Navigation 기능을 자주 사용하는데 Navigation은 기본적으로
begintransaction의 replace()로 동작
하는 것을 알게 되었다.
DialogFragment
는 Navigation에서 begintransaction의 add()
기능을 사용할 수 있도록 해준다.
DialogFragment
를 사용하다가 해당 프래그먼트의 상태표시줄을 투명하게 만들기 위해 theme
에서 windowTranslucentStatus
값을 true
로 바꾸었는데 완전한 투명 상태가 아닌 반투명 상태가 되었다
.
인터넷에 찾아보니 window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
를 사용하면 된다고 해서 activity.window
를 사용해 적용해보았는데 적용이 되지 않았다.
이 문제로 몇시간 동안 싸우면서 결국 해결했는데 문제는 매우 간단한 것이었다;;
바로 activity.window
가 아니라 dialog.window
를 사용하면 되는 것었다.
결론 : Theme
에서 windowTranslucentStatus
를 사용해 상태바를 반투명하게 만들고, DialogFragment
에서dialog.window!!.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
를 사용해 완전 투명하게 만들어주면 된다.