Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多重文本。Libgdx_Java_Android_Libgdx - Fatal编程技术网

Java 多重文本。Libgdx

Java 多重文本。Libgdx,java,android,libgdx,Java,Android,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

如何装箱多行文本?我尝试使用标签,但文本只有一行

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);
使用
setWrap(true)在标签上

据博士说

  • 如果为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();
    }
}
以下是输出:


一种更简单的解决方案是只对换行符使用\n,而不是

 Label label=new Label("MULTILINE IN LIBGDX GAME DEVELOPMENT",skin);
你就这么做吧

Label label=new Label("MULTILINE\nIN\nLIBGDX\nGAME\nDEVELOPMENT",skin);
标签将是:

MULTILINE
IN
LIBGDX
GAME
DEVELOPMENT