2014-09-10 125 views
2

所以我一直在四處搜尋,對於我的生活無法弄清楚如何正確地做到這一點。我只是有一個小文本區域,並希望能夠通過它滾動。我被告知這很容易將TextArea添加到ScrollPane,但似乎比這更復雜。這裏是我的代碼的要點:)將Libgdx滾動條添加到TextArea

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

這不是最佳解決方案。我想這是LIBGDX更新佈局錯誤。 這是適用於我的解決方案解決方案:

Set pref。手動更新行數,並在更改行數時更新滾動佈局。

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