将Libgdx滚动条添加到TextArea

时间:2014-09-10 14:05:19

标签: java user-interface libgdx textarea scrollpane

所以我一直在寻找,因为我的生活无法弄清楚如何正确地做到这一点。我只是有一个小文本区域,希望能够滚动它。我被告知它就像将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放在表格中并设置表格的单元格大小。任何其他建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

这不是最好的解决方案。我想这是LIBGDX更新布局错误。 这是适用于我的解决方案:

设置pref。手动行并在更改行数时更新滚动布局。

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