2015-08-16 5 views
0

На экране выбора уровня, над которым я сейчас работаю, я не могу заставить таблицу Scene2D UI заполнить весь экран. я пропустил несколько битов из кода, чтобы уменьшить длину, но вот соответствующий код:Пользовательский интерфейс Scene2D не заполняет весь экран

Stage stage = new Stage(new ScreenViewport()); 

table = new Table(); 
table.setFillParent(true); 
innerTable = new Table(); 
//Omitted: Add a button to innerTable for each level 

ScrollPaneStyle scrollPanelStyle = new ScrollPaneStyle(); 
scrollPanelStyle.vScrollKnob = new BaseDrawable(); 
scrollPane = new ScrollPane(innerTable); 
scrollPane.setScrollingDisabled(true, false); 
scrollPane.setupOverscroll(30f, 30f, 150f); 

//Temporarily a restart icon 
Image backButton = new Image(backButtonTexture); 
backButton.setScaling(Scaling.fit); 
table.add(backButton).height(75f).width(75f).pad(20, 0, 20, 0).left(); 
table.row(); 
table.add(scrollPane); 

В настоящее время она выглядит следующим образом. Значок не так далеко, как я думаю, это будет с текущим кодом. Насколько мне известно, он должен быть на 0 по оси X.

Level selection screen

То же самое верно и для innerTable с ScrollPane, содержащий все уровни, он не заполняет весь экран по оси X, но это выглядит, как я хочу, так что это на самом деле не проблема там.

Ответ: Добавление expandX() к моему ScrollPane в конечном итоге делает трюк, в результате чего в этой линии: table.add(scrollPane).expandX();. Огромное спасибо флоту.

+0

Как временное решение, я могу использовать отрицательное дополнение, но более правильное исправление по-прежнему будет очень цениться. – tobloef

ответ

1

Я думаю, что таблица правильно растянута в вашем окне просмотра, но есть и другая неправильная конфигурация. Я рекомендую использовать режим отладки, чтобы получить более подробную информацию (см. https://github.com/libgdx/libgdx/wiki/Table#debugging - также используйте кнопку «Назад» и т. Д.). Если вы не можете найти решение, используя этот метод самостоятельно, обновите скриншот, чтобы мы могли исследовать его дальше. Благодарю.

Окончательное решение (см комментарии):

table.add(scrollPane).expandX(); 

Стол был уже заполняя весь экран, но содержал панель прокрутки не было. По умолчанию ячейки таблицы адаптируются к их контенту. Используя expandX, мы могли бы, наконец, расширить ширину ячейки, которая содержит панель прокрутки, до полной ширины таблицы.

+0

Хорошо, я добавил изображение, в котором включен режим отладки. Я использовал метод width() на значке, так что теперь он действительно подходит к краю, но моя проблема еще не решена, так как край таблицы все еще не заполняет весь экран. – tobloef

+0

Странно ... Я могу представить себе две возможности: a) таблица как-то приспосабливается к ScrollPane -> вытащите ее и посмотрите, к чему идет кнопка. Если x = 0, то ScrollPane является проблемой, если она центрируется, то setFillParent (true) каким-то образом не работает в вашем случае. b) Видовой экран вызывает проблему. Может быть, он не масштабируется до полного размера окна? – flogy

+0

На самом деле, если вы посмотрите внимательно, вы увидите синюю границу, заполняющую весь экран. Разве это не означает, что внешний стол заполняет все пространство, даже если мои внутренние таблицы не являются? А что касается ScrollPane, удаление которого приводит к следующему: http://i.imgur.com/MpFr07h.png – tobloef

Смежные вопросы