Android Dialog 背景如何设置完全透明

221 阅读1分钟

要在 Android 中创建一个背景完全透明的对话框 (Dialog),您可以使用自定义的对话框主题来实现。android:backgroundDimEnabled 设置为false可以阻止Dialog显示时背景变暗。

1. 创建自定义对话框主题

首先,在项目的 res/values/styles.xml 文件中,定义一个自定义的对话框主题。

<!-- res/values/styles.xml -->
<resources>
    <!-- 自定义透明对话框主题 -->
    <style name="TransparentDialogTheme" parent="Theme.AppCompat.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
</resources>

2. 在代码中使用自定义主题创建对话框

然后,在Activity 或 Fragment 中,使用这个自定义主题来创建对话框:

val dialog = Dialog(this, R.style.TransparentDialogTheme)
dialog.setContentView(R.layout.dialog_layout) // 设置对话框布局
dialog.show()

3. 使用 DialogFragment(可选)

如果希望使用 DialogFragment 来管理对话框,您也可以在 DialogFragment 中应用自定义主题:

class TransparentDialogFragment : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = Dialog(requireContext(), R.style.TransparentDialogTheme)
        dialog.setContentView(R.layout.dialog_layout) // 设置对话框布局
        return dialog
    }
}

4. 显示 DialogFragment

在Activity 或 Fragment 中显示 DialogFragment:

val dialogFragment = TransparentDialogFragment()
dialogFragment.show(supportFragmentManager, "transparentDialog")

通过这种方式,很简单的就可以创建一个背景完全透明的对话框。