LibGDX - 如何在不影响单元格内容的情况下增加单元格的大小?
LibGDX - How to increase a cell's size without affecting its content?
我正在试验 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();
}
}
当 运行 时产生以下结果:
现在我想将单元格的内容对齐到左上角。为此,我将单元格的宽度和高度设置为 100 并应用对齐方式,如下所示:
table.add(new Label("Text", skin)).width(100).height(100).top().left();
这会导致单元格的内容随着单元格的增加而增加:
这是预期的行为吗?如果是这样,有没有办法在不影响其内容的情况下增加单元格的大小?
使用单元格的 expand
方法不会影响其内容,但我想更精确地控制单元格的大小,将其设置为特定值或百分比。
这是意料之中的。当您在单元格上设置显式大小时,相同的大小将应用于单元格中的演员。
要获得您想要的行为,您应该将 table 本身设置为您想要的整体大小。然后在单元格上使用 expand()
使其填充 table。由于您没有在单元格上设置明确的大小,演员仍然可以控制自己的大小,并且您可以在其单元格上使用对齐方式将其在单元格中对齐。
或者您也可以直接在 Label 上设置对齐方式,即使 Label Actor 正在填充单元格,它也会对齐自身内的文本。
我正在试验 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();
}
}
当 运行 时产生以下结果:
现在我想将单元格的内容对齐到左上角。为此,我将单元格的宽度和高度设置为 100 并应用对齐方式,如下所示:
table.add(new Label("Text", skin)).width(100).height(100).top().left();
这会导致单元格的内容随着单元格的增加而增加:
这是预期的行为吗?如果是这样,有没有办法在不影响其内容的情况下增加单元格的大小?
使用单元格的 expand
方法不会影响其内容,但我想更精确地控制单元格的大小,将其设置为特定值或百分比。
这是意料之中的。当您在单元格上设置显式大小时,相同的大小将应用于单元格中的演员。
要获得您想要的行为,您应该将 table 本身设置为您想要的整体大小。然后在单元格上使用 expand()
使其填充 table。由于您没有在单元格上设置明确的大小,演员仍然可以控制自己的大小,并且您可以在其单元格上使用对齐方式将其在单元格中对齐。
或者您也可以直接在 Label 上设置对齐方式,即使 Label Actor 正在填充单元格,它也会对齐自身内的文本。