LibGDX - Как увеличить размер ячейки, не влияя на ее содержимое? - PullRequest
0 голосов
/ 13 мая 2018

Я экспериментирую с 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 ячейки не влияет на ее содержимое, однако я хотел иметь более точный контроль над размером ячейки,установка определенного значения или процента.

1 Ответ

0 голосов
/ 14 мая 2018

Это ожидается.Когда вы устанавливаете явный размер для ячейки, такой же размер применяется к действующему в ячейке.

Чтобы получить желаемое поведение, вы должны установить для самой таблицы нужный вам общий размер.Затем используйте expand() в ячейке, чтобы заполнить таблицу.Поскольку вы не установили явный размер ячейки, актер все еще имеет контроль над своим собственным размером, и вы используете выравнивание по его ячейке, чтобы выровнять его по ячейке.

Или же вы можете просто установить выравнивание непосредственно на Ярлыке, и он будет выравнивать текст внутри себя, даже если Лейбл Актер заполнит ячейку.

...