修改Compose Dialog 遮罩亮度

利用Dialog 在屏幕中央自动居中特性,编写了一个自定义的弹出菜单,发现Dialog 对背景的遮罩太强,背景很暗,作为菜单的背景不太合适,希望背景加亮些(增加透明度,减少遮罩厚度)。问DeepSeek 给出的方案是在Dialog 里套一层Box,然后用.backgroud的颜色控制透明度。

modifier = Modifier.background(Color.Black.copy(alpha = 0.3f)) // 控制透明度

实践发现,这种方法不但没有改变Dialog对背景的缺省遮罩,反而是加了一层遮罩。

最后,还是问Gemimi解决的,也许是它最懂自家的东西。就是调用父窗口的window.setDimAmount 函数,设置窗口的暗淡量。0为无遮罩,1为全遮罩。

Dialog(
        onDismissRequest = onDismiss,
        properties = DialogProperties(
            usePlatformDefaultWidth = false,
            //其他设置
        )
    ) {
        //关键一行
        (LocalView.current.parent as DialogWindowProvider).window.setDimAmount(0.1f)
        ...  ...
}

发表评论