LibGDX - 如何在不影响其内容的情况下增加单元格的大小?

时间:2018-05-13 17:16:14

标签: libgdx scene2d

我尝试使用LibGDX的Scene2d并编写了这个简单的代码:

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;

public class UITest extends ApplicationAdapter {

    private Stage stage;

    public static void main(String[] args) {
        LwjglApplicationConfiguration configuration = new LwjglApplicationConfiguration();
        configuration.title = "UI Test";
        configuration.width = 800;
        configuration.height = 600;
        new LwjglApplication(new UITest(), configuration);
    }

    @Override
    public void create() {
        this.stage = new Stage();

        Skin skin = new Skin(Gdx.files.internal("skins/default.json"));

        Table table = new Table();
        table.setFillParent(true);
        table.add(new Label("Text", skin));

        table.debugAll();

        this.stage.addActor(table);
    }

    @Override
    public void render() {
        this.stage.draw();
    }
}

运行时产生以下内容:

teste

现在我想将单元格的内容对齐到左上角。为此,我将单元格的宽度和高度设置为100并应用对齐,如下所示:

table.add(new Label("Text", skin)).width(100).height(100).top().left();

导致细胞内容物与细胞一起增加:

enter image description here

这是预期的行为吗?如果是这样,有没有办法增加单元格的大小而不影响其内容?

使用单元格的expand方法不会影响其内容,但我希望能够更精确地控制单元格的大小,将其设置为特定值或百分比。 / p>

1 个答案:

答案 0 :(得分:1)

这是预料之中的。在单元格上设置显式大小时,相同大小将应用于单元格中的actor。

要获得所需的行为,您应该将表本身设置为所需的整体大小。然后在单元格上使用expand()使其填充表格。由于您尚未在单元格上设置显式大小,因此actor仍然可以控制其自身的大小,并且您可以在其单元格上使用对齐方式在单元格中对齐它。

或者您可以直接在Label上设置对齐,即使Label Actor填充单元格,它也会将文本对齐。