我有2个视图:LoginScreen和MainScreen。我使用replaceWith()
切换到主屏幕。它们都具有相同的prefHeight
和prefWidth
。问题是当我从LoginScreen转到MainScreen时,窗口的底部会折断并变大,例如30-40px。
这是我的代码:
loginScreen.replaceWith(mainScreen, sizeToScene = true, transition=metroAnimation)
然后我用sizeToScene=false
进行了尝试,并且工作了,不再snap花了……但是我注意到另一个问题,MainScreen顶部的30-40px消失了:
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
时,底部会增加。答案 0 :(得分:0)
我认为我发现了问题,这是因为flowpane
的项目超出了它们在窗口中的容纳量。我将flawpane
添加到scrollpane
中,问题已解决。
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))
}
}
}
}