Добавление полосы прокрутки Libgdx в TextArea

Итак, я искал вокруг и всю свою жизнь не могу понять, как правильно это сделать. У меня просто есть небольшая текстовая область, и я хочу иметь возможность прокручивать ее. Мне сказали, что это так же просто, как добавить TextArea в ScrollPane, но это кажется более сложным. Вот суть моего кода:

Skin defaultSkin = newSkin(DEFAULT_SKIN_FILEPATH +"uiskin.atlas", DEFAULT_SKIN_FILEPATH
+"uiskin.json");
TextArea textArea = new TextArea(levelLoader.getCodeSnippet(), defaultSkin);
ScrollPane pane = new ScrollPane(textArea, defaultSkin);
pane.setForceScroll(false, true);
pane.setFlickScroll(false);
pane.setOverscroll(false, true);
pane.setBounds(0f, 20f, game.getWindowWidth(), 300f);
gui.addActor(pane);
Gdx.input.setInputProcessor(gui);
setIsCreated(true);

levelLoader.getCodeSnippet() возвращает строку, содержащую многострочный фрагмент текста из .txt. TextArea появляется в окне игры, а также появляется многострочный текст. Однако я могу прокручивать текст только с помощью клавиш со стрелками. Я заставил полосу прокрутки отобразиться, но она занимает всю правую часть окна, например: http://s27.postimg.org/vqws36k77/pic.png Он не будет прокручиваться и считает, что нет нескольких строк для прокрутки, даже если они очевидны при прокрутке с помощью клавиш со стрелками. Я также пытался сделать textArea больше, чем scrollPane, но, возможно, сделал это неправильно. Что я здесь делаю неправильно?

Обновление: я пробовал как разместить ScrollPane внутри таблицы, так и установить размер ячейки таблицы. Любые другие предложения будут оценены.


person Nick Moser    schedule 10.09.2014    source источник


Ответы (1)


Это не лучшее решение. Я предполагаю, что это ошибка макета обновления LIBGDX. Это обходное решение, которое работает для меня:

Установить пред. строки вручную и обновлять макет прокрутки при изменении количества строк.

textArea.setPrefRows(numberOfScrollLines); //numberOfScrollLines = text.split("\n").length pane.layout();

person MatejC    schedule 28.10.2014