replaceWith() 方法的 sizeToScene 属性 剪切顶部并增加 window 的底部
replaceWith() method's sizeToScene property cuts top and increases bottom part of the window
我有 2 个视图:LoginScreen 和 MainScreen。我使用 replaceWith()
切换到主屏幕。他们都有相同的 prefHeight
和 prefWidth
。问题是,当我从 LoginScreen 转到 MainScreen 时,window 的底部突然变大了 30-40px。
这是我的代码:
loginScreen.replaceWith(mainScreen, sizeToScene = true, transition=metroAnimation)
然后我用 sizeToScene=false
尝试了它并且它起作用了,不再卡住......但是我注意到另一个问题,MainScreen 顶部的大约 30-40px 不见了:
sizeToScene=true
底部不断增长:
sizeToScene=false
,底部不长,顶部被吃掉:
我该如何解决它,我做错了什么吗?
这是我的主屏幕:
class MainScreen : View("MainScreen") {
private val toolbarLayout: ToolbarLayout by inject()
override val root = borderpane {
addClass(screen)
top = toolbarLayout.root
center = flowpane {
vgap = 20.0
hgap = 20.0
paddingAll = 20
for (i in 0..14) {
add(MobileAppGridItemLayout(i))
}
}
}
}
这是我的ToolbarLayout
class ToolbarLayout : View() {
override val root = borderpane {
addClass(PanelStyle.toolbar)
paddingAll = 20
left {
hbox(20) {
label("MainView") {
addClass(PanelStyle.titleText)
textFill = Color.WHITE
}
}
}
right {
vbox {
button("Logout") {
addClass(toolbarButton)
}
}
}
}}
这是 LoginScreen 和 MainScreen 中使用的默认屏幕高度和宽度的样式:
screen {
prefHeight = 720.px
prefWidth = 1280.px
}
已编辑:
我尝试 replaceWith()
没有动画,结果如下:
- 当
sizeToScene=false
时,底部没有生长,顶部也没有被吃掉。
- 当
sizeToScene=true
时,底部变大。
我想我发现了问题,这是因为 flowpane
的项目超出了 window 的范围。我在scrollpane
中添加了flawpane
,问题就解决了。
override val root = borderpane {
addClass(screen)
top = toolbarLayout.root
center = scrollpane {
isFitToHeight = true
isFitToWidth = true
vbarPolicy = ScrollPane.ScrollBarPolicy.AS_NEEDED
content = flowpane {
vgap = 20.0
hgap = 20.0
padding = insets(20, 40, 20, 40)
for (i in 0..15) {
add(MobileAppGridItemLayout(i))
}
}
}
}
我有 2 个视图:LoginScreen 和 MainScreen。我使用 replaceWith()
切换到主屏幕。他们都有相同的 prefHeight
和 prefWidth
。问题是,当我从 LoginScreen 转到 MainScreen 时,window 的底部突然变大了 30-40px。
这是我的代码:
loginScreen.replaceWith(mainScreen, sizeToScene = true, transition=metroAnimation)
然后我用 sizeToScene=false
尝试了它并且它起作用了,不再卡住......但是我注意到另一个问题,MainScreen 顶部的大约 30-40px 不见了:
sizeToScene=true
底部不断增长:
sizeToScene=false
,底部不长,顶部被吃掉:
我该如何解决它,我做错了什么吗?
这是我的主屏幕:
class MainScreen : View("MainScreen") {
private val toolbarLayout: ToolbarLayout by inject()
override val root = borderpane {
addClass(screen)
top = toolbarLayout.root
center = flowpane {
vgap = 20.0
hgap = 20.0
paddingAll = 20
for (i in 0..14) {
add(MobileAppGridItemLayout(i))
}
}
}
}
这是我的ToolbarLayout
class ToolbarLayout : View() {
override val root = borderpane {
addClass(PanelStyle.toolbar)
paddingAll = 20
left {
hbox(20) {
label("MainView") {
addClass(PanelStyle.titleText)
textFill = Color.WHITE
}
}
}
right {
vbox {
button("Logout") {
addClass(toolbarButton)
}
}
}
}}
这是 LoginScreen 和 MainScreen 中使用的默认屏幕高度和宽度的样式:
screen {
prefHeight = 720.px
prefWidth = 1280.px
}
已编辑:
我尝试 replaceWith()
没有动画,结果如下:
- 当
sizeToScene=false
时,底部没有生长,顶部也没有被吃掉。 - 当
sizeToScene=true
时,底部变大。
我想我发现了问题,这是因为 flowpane
的项目超出了 window 的范围。我在scrollpane
中添加了flawpane
,问题就解决了。
override val root = borderpane {
addClass(screen)
top = toolbarLayout.root
center = scrollpane {
isFitToHeight = true
isFitToWidth = true
vbarPolicy = ScrollPane.ScrollBarPolicy.AS_NEEDED
content = flowpane {
vgap = 20.0
hgap = 20.0
padding = insets(20, 40, 20, 40)
for (i in 0..15) {
add(MobileAppGridItemLayout(i))
}
}
}
}