[Android]DialogFragmentを全画面で表示する

スポンサーリンク

目的

DialogFragmentでレイアウトを全画面で表示したい。

カスタムダイアログとか作るときに結構使う。

実装

//
open class FullScreenDialogBaseFragment : DialogFragment() {


    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        dialog?.requestWindowFeature(Window.FEATURE_NO_TITLE)
        return super.onCreateView(inflater, container, savedInstanceState)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        view.setOnTouchListener { _, _ ->
            if (isCancelable) dismiss()
            true
        }
    }

    override fun onStart() {
        super.onStart()
        // ダイアログを全画面にする
        dialog?.window?.apply {
            setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
            )
            setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
        }
    }
}

setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)で全画面にしている。

レイアウト側で背景色を変えたいのでsetBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))で背景色をなくしている。

作って楽しむプログラミング Androidアプリ超入門
はじめてでも大丈夫! アプリを作る楽しさがこの1冊だけで体験できます 本書はプログラミングがまったく初めての人でも、簡単なサンプルを作りながら、Androidアプリの作成を楽しく体験できる入門書です。 全9章を順番に進めることで、Androidアプリの基礎知識、画面のデザイン、コードの書き方などが理解できます。 章ごと...

タイトルとURLをコピーしました