DialogFragment의 배경색 투명 or 지정

하고 싶은 일



머티리얼 디자인화한 DialogFragment 배경의 회색(스크림)을 투명 or 색을 지정하고 싶다



스크림이란 무엇인가? 는 Material Design 가이드라인에 설명되어 있습니다.
htps : // 마테리아 l. 이오 / 코 m 포넨 ts / ぢ 아 gs # 아나토 my

완성형





구현 코드



방법은 style.xml or 코드의 두 가지가 있습니다.

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>

이 스타일을 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
htps : // 기주 b. 코 m / 마테리아 l - 코 m 포넨 ts / 마테리아 l - 코 m 포넨 ts - 안 d 로이 d / b ぉ b / 마스 r / 두 cs / 껌 d. md

Dialogs - Material Design
htps // 마테리아 l. 이오 / 코 m 포넨 ts / ぢ 아 gs

좋은 웹페이지 즐겨찾기