Android ダイアログを画面いっぱいに表示する
お知らせの通知などのActivityを覆うようなダイアログを表示させたい時に
使える”ほぼ”全画面ダイアログを表示させる方法のご紹介です。
画像のようにダイアログの後ろにグレーアウトしたActivityが
表示されているので完全な全画面ではなく、 ”ほぼ”全画面 です。

コードはKotlinです。
まず、表示元のActivityのコードです。
ダイアログを開く用のボタンにDialogFragmentの表示を設定しています。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 開くボタンにイベントを設定
openBtn.setOnClickListener {
val dialog = FullScreenTestDialog()
dialog.show(supportFragmentManager, FullScreenTestDialog.CLASS_NAME)
}
}
}
次にメインのほぼ全画面表示のダイアログのコードです。
DialogFragment を継承しています。
class FullScreenTestDialog : DialogFragment {
constructor()
companion object
{
val CLASS_NAME = "FullScreenTestDialog"
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
if(context != null)
{
val dialog = Dialog(context!!)
dialog.setContentView(R.layout.dialog_full_screen_test)
// ボタンをタップしたらダイアログを閉じる
dialog.findViewById<Button>(R.id.closeBtn)?.setOnClickListener {
dialog.dismiss()
}
// 親の大きさに合わせる
dialog.window?.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
return dialog
}
return dialog
}
}
dialogのwindowプロパティに対して
幅と高さを親の大きさに合わせる
MATCH_PARENTを設定することで
”ほぼ”全画面表示にしています。
水曜担当:Tanaka
tanaka at 2020年04月22日 10:00:24