android Jetpack合成对话框-有没有办法改变背景透明度?

jvlzgdj9  于 2023-03-27  发布在  Android
关注(0)|答案(4)|浏览(168)

当我们在Jetpack Compose中显示Dialog/AlertDialog时,背景似乎有点暗,有没有办法调整背景alpha或使其透明?例如:显示对话框时,此图像中的白色背景将变为深灰色。

bejyjqdl

bejyjqdl1#

你可以使用一个全屏对话框,然后插入一张卡片,里面有你想要的文本。例如:

AlertDialog(
            modifier = Modifier.fillMaxSize(),
            backgroundColor = Color.White.copy(alpha = 0.2f),
            properties = DialogProperties(usePlatformDefaultWidth = false),

您可以在文本部分添加您的Card Composable:

text = {
        Card(Modifier.size(200.dp)) {
        Text(text = "test")
     }
}

希望这有帮助!

s8vozzvw

s8vozzvw2#

此行为由android.view.Window控制。
它位于Dialog的深处,我能想到的唯一改变它的方法就是复制所有的源代码。
然后,在源代码的这一行中,您可以插入以下内容:

window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
41ik7eoe

41ik7eoe3#

我尝试使用Dialog,但无法清除标志WindowManager.LayoutParams.FLAG_DIM_BEHIND
你可以尝试使用弹出窗口来取代对话框,一切工作对我来说很好。

Popup(
        onDismissRequest = {},
        properties = PopupProperties(
            focusable = true,
            dismissOnBackPress = false,
            dismissOnClickOutside = false,
            excludeFromSystemGesture = true,
        )
    ) {
        Box(
            contentAlignment = Alignment.Center,
            modifier = Modifier
                .fillMaxSize()
                .background(Color.Transparent)
        ) {
            // Your content code is here
        }
    }
62o28rlo

62o28rlo4#

你可以像这样轻松地做到这一点:

Dialog(onDismissRequest = {}) {
    (LocalView.current.parent as DialogWindowProvider)?.window?.setDimAmount(0f)
    // dialog content here...
   }

相关问题