首页 > 经验记录 > Jetpack Compose for Desktop设置窗口大小实际会比指定的数字更小的问题

Jetpack Compose for Desktop设置窗口大小实际会比指定的数字更小的问题

在Jetpack Compose for desktop的工程里,给桌面程序窗口设置大小(宽高)居然还要绕一层,让我确实有点疑惑。

总之,我们要设置窗口大小,默认设置/教程里应该都是这样子的 —— 通过window state,设置顶层窗口的宽高。

fun main() = application {
    Window(
        onCloseRequest = ::exitApplication,
        state = WindowState(width = 800.dp, height = 600.dp),
        resizable = false
    ) {
        App()
    }
}

可惜的是,这个搞法他有问题。实际上,他运行出来的窗口就对不上我们设置的大小。

我用qq截图选框对比大小、以及对比其他应用的大小后,发现你用这套逻辑的宽高都会小一截,宽和高都缩水了几十个像素……

实际生成的窗口大小比我们设置的大小要更小。

 

 

找了找 StackOverflow,也有差不多的问题:

layout – How do I set the window size to fit the contents in Jetpack Compose? – Stack Overflow

不过他这个问题没人回答,所以我又去找了找其他地方,自己再试了几下。

总之,让窗口的宽高和你的预想一致的方式,其实应该长这样:

fun main() = application {
    Window(
        onCloseRequest = ::exitApplication,
        state = WindowState(size = DpSize.Unspecified),
        resizable = false
    ) {
        Box(Modifier.size(800.dp, 600.dp)) {
            App()
        }
    }
}

顶层窗口的WindowState设置款高为未定义,里面再套一层Box把窗口给撑起来,我们就设置里面Box的宽高。我实际截图测试了一下窗口大小,这样子确实是完美的。

以上,记录一下。

 

           


CAPTCHAis initialing...
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00