2017-05-28 30 views
2

如何創建多行文本?我試圖使用標籤,但文本只有1行。多文字文字。 Libgdx

Table table = new Table(); 
table.setPosition(0,0); 
table.setSize(800,440); 

label = new Label("Some long string here...", skin); 
label.setFillParent(true); 
label.setAlignment(center); 
label.setPosition(0,0); 
label.setWidth(40); 
label.setHeight(label.getPrefHeight()); 
label.setText(tutortext); 

table.addActor(label); 

stage.addActor(table); 
stage.setDebugAll(true); 

https://i.stack.imgur.com/3whQr.png

回答

3

標籤上的使用setWrap(true);

根據doc。

  • 如果爲false,則文本將只包含它包含換行符(\ n)的位置。標籤的首選大小將是文本邊界。
  • 如果爲true,則文本將使用標籤的寬度自動換行。標籤的首選寬度將爲0,預計外部的東西將設置標籤的寬度。啓用省略號時不會發生包裝。默認爲false。

  • 當啓用換行時,標籤的首選高度取決於標籤的寬度。在某些情況下,標籤的父級需要佈置兩次:一次設置標籤的寬度,第二次調整爲標籤的新首選高度。

我已經與小例子進行了測試:

public class MultiLine extends ApplicationAdapter { 

    Stage stage; 
    Skin skin; 

    @Override 
    public void create() { 

     stage=new Stage(); 

     skin=new Skin(Gdx.files.internal("skin/glassy-ui.json")); 

     Label label=new Label("MULTILINE IN LIBGDX GAME DEVELOPMENT",skin); 
     label.setWrap(true); 

     Table table=new Table(); 
     table.setFillParent(true); 

     table.add(label).width(150); 

     stage.addActor(table); 
    } 

    @Override 
    public void render() { 

     Gdx.gl.glClearColor(0,0,0,0); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.draw(); 
     stage.act(); 
    } 

    @Override 
    public void dispose() { 
     stage.dispose(); 
     skin.dispose(); 
    } 
} 

這裏是輸出:

enter image description here