Libgdx "pack", не работает, что я могу делать неправильно?

Я пытаюсь сделать окно, а затем использовать метод pack, чтобы получить нужный размер, но окно максимизируется. Вот мой код:

private Table buildOptionsWindowLayer() {
 winOptions = new Window("Options", skinLibgdx);
 // (...) building some widgets

 Gdx.app.log(TAG, "pref width is " + winOptions.getPrefWidth());
 // displays: "pref width is 247.0"

 winOptions.pack();

 // move the window
 winOptions.setPosition(Constants.VIEWPORT_GUI_HEIGHT - winOptions.getWidth() - 50, 50);
 return winOptions;
}

Окно заканчивается шириной 800.0f. Зачем?

Что он должен сделать:

Что он делает:

2 ответа

Я знаю, что это старый поток, но я просто столкнулся с этой проблемой. Вы можете переместить вызов пакета и позиции в метод onOptionsClicked, чтобы они вызывались после отображения окна.

private void onOptionsClicked()
{
 loadSettings();
 btnMenuPlay.setVisible(false);
 btnMenuOptions.setVisible(false);
 winOptions.setVisible(true);

 winOptions.pack();
 winOptions.setPosition(Constants.VIEWPORT_GUI_WIDTH - winOptions.getWidth() - 50, 50);
}


Дайте документации pack() прочитать. Я считаю, что ваш.pack является проблемой здесь, поскольку он вызывает конструктор супер класса перед вашим.

licensed under cc by-sa 3.0 with attribution.