반응형
안드로이드 코틀린 DialogFragment full screen & statusbar
Android Kotlin DialogFragment full screen And statusbar
안드로이드에 프레그먼트를 dialog처럼 쓸 수 있게 기본적으로 DialogFragment를 상속받아서 만들 수 있다.
이 때 이 fragmentDialog를 full screen을 적용할 수 있다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.FilterFullScreenDialog)
}
onCreate를 오버라이딩해서 만든 후 setStyle으로 style에 정의해둔 스타일을 적용하면 된다.
override fun getTheme(): Int {
return super.getTheme()
}
코틀린에는 getTheme() 함수를 제공해 주고 있으며 return으로 style을 해주면 된다.
그런데 이상하게 full screen은 잘 적용이 되지 않으며, 이쁘게 잘 그려지지도 않는다.
오히려 onCreate에서 setStyle하는 것이 확실하게 적용이 된다.
위에서 적용한 스타일은 아래와 같다.
<style name="FilterFullScreenDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowBackground">@android:color/white</item>
<item name="android:statusBarColor">#000000</item>
</style>
full screen은 windowIsFloating와 windowFullscreen을 false로 줘야하며, (true을 주면 어떻게 되드라...스테이터스바 위에 덮어버렸던걸로 기억하는데 정확하지 않다.)
배경은 대부분 transparent로 투명을 주지만 나와 같은 경우에는 뒤에 배경이 다 보여버려서 일부러 하얀색으로 정의해서 적용하였다.
statusBarColor은 fragment dialog가 떴을 때 핸드폰의 스테이터스바의 색상을 지정할 수 있는데, 나는 검정색으로 나와야 한다고 해서, 일부러 컬러를 지정했으며, 검정색으로 적용하였다.
그래도 안될 경우 xml을 살펴보도록 하자. 그리고 match_parent을 주면 제대로 될 것이다.
반응형