Android 14模拟器AlertDialog外部无法暗化的解决方法咨询
Android 14模拟器AlertDialog外部区域不暗化的解决办法
在Android 14(Upside Down Cake)模拟器中显示AlertDialog时,对话框外部区域无法像其他Android版本那样暗化,调用alertDialog.window?.setDimAmount(0.7f)仅在此版本下无效,附上的问题截图也能看到该现象。以下是可行的解决办法:
补充暗化窗口标记
在设置暗化程度前,先为窗口添加FLAG_DIM_BEHIND标记,确保系统开启背景暗化功能:alertDialog.window?.apply { addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) setDimAmount(0.7f) }调整主题配置
若应用使用Material3主题,默认可能关闭了Dialog背景暗化。可以直接指定兼容的系统主题创建Dialog:val alertDialog = AlertDialog.Builder(context, androidx.appcompat.R.style.Theme_AppCompat_Dialog_Alert) .setTitle("示例标题") .setMessage("示例内容") .create()也可以自定义主题并配置暗化属性:
<!-- res/values/styles.xml --> <style name="CustomAlertDialogTheme" parent="Theme.Material3.Dialog.Alert"> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.7</item> </style>创建Dialog时使用该自定义主题:
val alertDialog = AlertDialog.Builder(context, R.style.CustomAlertDialogTheme) .create()强制刷新窗口属性
针对Android 14的窗口机制调整,若上述方法无效,可尝试直接修改并刷新窗口属性:alertDialog.window?.attributes?.let { attrs -> attrs.dimAmount = 0.7f alertDialog.window?.attributes = attrs }
内容的提问来源于stack exchange,提问作者Tieria
相关产品推荐
相关产品推荐

