どうも。どっことです。今回はDialogFragment
をフルスクリーン化する実装方法を解説します。
DiagloFragmentをフルスクリーンで表示する
DialogFragment
はダイアログを表示するためのクラスです。シンプルなダイアログを表示するために使うのはもちろんですが、自分で色々カスタマイズできる拡張性の高いクラスでもあります。今回は、そんなDialogFragment
をカスタマイズするために画面いっぱいに表示する実装(フルスクリーン化)を解説します。
実装方法
今回はまとめてスニペットを載せたいと思います。ポイントは
onStart()
です。
class CustomDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return Dialog(requireActivity()).also { dialog ->
// 表示したいViewをここで生成します。LayoutInflaterなどを使ってもOK
val view = View(requireContext())
dialog.setContentView(view)
}
}
override fun onStart() {
super.onStart()
// onStart() で以下の処理をします。
dialog?.window?.also {
// ①背景色を背景透過にするよう設定(完全にフルスクリーンにするなら必要)
it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
// ②画面サイズに合わせて領域を広げる
it.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
}
}
}
onStart
で①背景色を透過にする
、②表示領域を画面いっぱいに広げる
ように設定します。これにより表示するダイアログをフルスクリーン化することができます。
まとめ
今回はDialogFragment
のフルスクリーン化について解説しました。DialogFragment
は拡張性が高い反面、使いこなすのが非常に難しいクラスです。ただ正しく理解さえできれば一つ一つの処理は難しいものでは無いので、どんなカスタマイズでもできるようにマスターしていきたいですね。