まくろぐ
更新: / 作成:

Android でダイアログを表示するときに DialogFragment クラスなどを使用すると、デフォルトではダイアログの後ろは暗くなって、下の UI がうっすらと見える状態になります。 このような効果を抑制して、背景が明るいままにするには、ウィンドウから FLAG_DIM_BEHIND フラグをクリアします。

class MyDialogFragment : DialogFragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // ダイアログの中身を独自レイアウトにする
        return inflater.inflate(R.layout.my_dialog, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        disableBackgroundDimming()
    }

    /** ダイアログの背景が暗くなるのを防ぐ */
    private fun disableBackgroundDimming() {
        dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
    }
}

関連記事

まくろぐ
サイトマップまくへのメッセージ