LoginSignup
1
1

More than 3 years have passed since last update.

DialogFragmentの背景色を透明 or 指定する

Last updated at Posted at 2021-01-23

やりたい事

マテリアルデザイン化したDialogFragmentの背景のグレー(スクリム)を透明 or 色を指定したい

スクリムとは何か?はMaterial Designガイドラインで説明されている
https://material.io/components/dialogs#anatomy

完成形

実装コード

やり方は style.xml or コードの2通りがある。

style パターン

style.xml

    <!-- https://material.io/components/dialogs/android#dialogs -->
    <style name="TransportDialog" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">

        <!-- 透明にする -->
        <item name="android:backgroundDimEnabled">false</item>

        <!-- 色を調整する -->
        <item name="backgroundDimAmount">10f</item>
    </style>

このstyleをDialogFragmentにセットする

class TransportDialogFragment : DialogFragment(R.layout.transparent_dialog_fragment) {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        // スタイルをセット
        setStyle(STYLE_NORMAL, R.style.TransportDialog)
        return super.onCreateDialog(savedInstanceState)
    }

これで色が変更できた。

コード パターン


class TransportDialogFragment : DialogFragment(R.layout.transparent_dialog_fragment) {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return super.onCreateDialog(savedInstanceState).apply {
            // Dialog背景色を指定
            window?.setDimAmount(0f) // 0だと透明になるので適宜調整する
        }
    }
}

これでも色が変更できる。

全体コード

GitHubにUPしておいた

参考リンク

material-components-android/getting-started.md at master
https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

Dialogs - Material Design
https://material.io/components/dialogs

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1