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



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム