Dialog(
properties = DialogProperties(usePlatformDefaultWidth = false),
onDismissRequest = {viewModel.showDialog.value = false}
){
Column(modifier = Modifier.width(LocalConfiguration.current.screenWidthDp.dp)
.height(LocalConfiguration.current.screenHeightDp.dp).background(color = Color.Black.copy(alpha = 1f))) {
}
}
运行此代码会产生全屏对话框,但高度与屏幕高度不完全匹配。
有没有办法让对话框占据屏幕尺寸的完整宽度和高度?
请找到下面的屏幕截图:
如果你看看如何屏幕高度Dp https://developer.android.com/reference/android/content/res/Configuration#screenHeightDp被定义为。
可用屏幕空间的当前高度(以 dp 为单位),对应于屏幕高度资源限定符。
显然,它不包括窗口插入所占用的区域,例如状态栏、导航栏和切口。
所以这是我设法解决问题的解决方案。它尝试从 WindowManager 获取整个屏幕大小。并通过喂养它们Modifier.requiredSize()
。请注意,通过使用忽略父约束非常重要requiredSize
,否则无法工作。更多信息请访问https://stackoverflow.com/a/65779227/157675 https://stackoverflow.com/a/65779227/157675 .
Dialog(
properties = DialogProperties(usePlatformDefaultWidth = false),
onDismissRequest = onDismiss
) {
val context = LocalContext.current
val windowManager =
remember { context.getSystemService(Context.WINDOW_SERVICE) as WindowManager }
val metrics = DisplayMetrics().apply {
windowManager.defaultDisplay.getRealMetrics(this)
}
val (width, height) = with(LocalDensity.current) {
Pair(metrics.widthPixels.toDp(), metrics.heightPixels.toDp())
}
Column(
modifier = Modifier
.requiredSize(width, height)
.background(color = Color.Green)
) {
// ...
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)