どっこと備忘録群

アウトプットしないとインプットできない私が Androidアプリ開発をメインとした備忘録を載せています。

DialogFragmentを扱う

DialogFragment をフルスクリーンで表示したい

onStart() メソッド内で以下を設定する。

  1. setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)): 背景色を透過に設定する。背景が透過でないと、ダイアログの角などが元の画面に残ってしまいます。
  2. setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT): ダイアログの幅と高さを画面いっぱいに広げる。
class CustomDialogFragment : DialogFragment() {
    
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return Dialog(requireActivity()).also { dialog ->
            // ここで表示したいViewを生成し、ダイアログに設定する
            val view = View(requireContext())
            dialog.setContentView(view)
        }
    }

    override fun onStart() {
        super.onStart()
        // onStart() で以下の処理を行う
        dialog?.window?.also {
            // 1. 背景色を透過に設定する(完全にフルスクリーンにするなら必須)
            it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            // 2. 画面サイズに合わせて表示領域を広げる
            it.setLayout(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT
            )
        }
    }
}

最終更新: 2025.9.9