Before 2022/Android
Dialog Full Size 및 화면 하단에 위치 시키기
Eljoe
2019. 6. 17. 11:28
styles.xml에 아래와 같은 값을 넣는다.
<style name="CustomFullDialog">
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">true</item>
</style>
android:windowFullscreen -> dialog의 크기를 화면에 꽉 채우게한다.
android:windowIsFloating -> 부모 뷰의 크기 및 위치 상관 없이(소프트 키나 타이틀 바 영역도 관계 없이) 부모 뷰 위에 띄우는걸 허용하는 속성
이후 dialog의 width는 match_parent 속성을 부여하고 height는 wrap_content나 적당한 값을 부여한 후
아래와 같은 코드를 해당 dialog에 붙여넣는다.
class TestFragment : DialogFragment() {
private var type: String? = null
companion object {
fun newInstance(type: String): DialogFragment {
val fragment = TestFragment()
val args = Bundle()
args.putString("type", type)
fragment.arguments = args
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 스타일 적용
setStyle(STYLE_NORMAL, R.style.CustomFullDialog)
type = arguments?.getString("type")
}
override fun onStart() {
super.onStart()
// 레이아웃 크기 및 위치 조정
val width = ViewGroup.LayoutParams.MATCH_PARENT
val height = ViewGroup.LayoutParams.WRAP_CONTENT
dialog?.window?.setLayout(width, height)
dialog?.window?.setGravity(Gravity.BOTTOM)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.d_fragment_direct, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// 뷰가 그려진 이후의 로직
}
}