[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アプリ超入門 | WINGSプロジェクト 髙江 賢, 山田 祥寛 |本 | 通販 | Amazon
AmazonでWINGSプロジェクト 髙江 賢, 山田 祥寛の作って楽しむプログラミング Androidアプリ超入門。アマゾンならポイント還元本が多数。WINGSプロジェクト 髙江 賢, 山田 祥寛作品ほか、お急ぎ便対象商品は当日お届けも可能。また作って楽しむプログラミング Androidアプリ超入門もアマゾン配送商品...

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