Свойство метода sizeToScene метода replaceWith () обрезает верхнюю часть и увеличивает нижнюю часть окна. - PullRequest
0 голосов
/ 19 января 2019

У меня есть 2 просмотра: LoginScreen и MainScreen. Я использую replaceWith() для переключения на главный экран. Они оба имеют одинаковые prefHeight и prefWidth. Проблема в том, что когда я перехожу с LoginScreen на MainScreen, нижняя часть окна защелкивается и увеличивается примерно на 30-40 пикселей.

Это был мой код:

loginScreen.replaceWith(mainScreen, sizeToScene = true, transition=metroAnimation)

и затем я попробовал это с sizeToScene=false, и это сработало, больше не хватало ... однако я заметил другую проблему, около 30-40px вершины MainScreen исчезло:

sizeToScene=true с растущим дном: enter image description here

sizeToScene=false, низ не растет, но верхняя часть съедается: enter image description here

Как я могу это исправить, я что-то не так делаю?

Это мой главный экран:

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() без анимации и вот результаты:

  1. Когда sizeToScene=false, нет растущих низов и нет съеденных верхушек.
  2. Когда sizeToScene=true, дно растет.

1 Ответ

0 голосов
/ 21 января 2019

Я думаю, что нашел проблему, потому что элементы 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))
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...