Java 居中文本按钮以显示libgdx

Java 居中文本按钮以显示libgdx,java,android,libgdx,Java,Android,Libgdx,我目前正在使用LibGDX创建一个游戏,我现在正在创建我的标题屏幕。我在屏幕上的文本按钮居中时遇到问题,如果将文本按钮的宽度设置为舞台的宽度,我可以使它们居中,但如果您单击该按钮从左到右的任何位置,都允许按下按钮,而不是仅单击按钮本身 我怎样才能使文本按钮在游戏屏幕上居中,并且彼此居中?我有三个文本按钮(新游戏、继续和退出游戏) 任何帮助都将不胜感激,谢谢 编辑: 这是我的三个按钮的代码 btnNG = new TextButton("New Game", btnStyle[0]) {

我目前正在使用LibGDX创建一个游戏,我现在正在创建我的标题屏幕。我在屏幕上的文本按钮居中时遇到问题,如果将文本按钮的宽度设置为舞台的宽度,我可以使它们居中,但如果您单击该按钮从左到右的任何位置,都允许按下按钮,而不是仅单击按钮本身

我怎样才能使文本按钮在游戏屏幕上居中,并且彼此居中?我有三个文本按钮(新游戏、继续和退出游戏)

任何帮助都将不胜感激,谢谢

编辑:

这是我的三个按钮的代码

btnNG = new TextButton("New Game", btnStyle[0]) {
    {
        setName("New Game");
        addListener(new InputListener() {
            public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnNG.getName(), "touchDown?");
                return true;
            }

            public void touchUp(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnNG.getName(), "touchUp?");
                //g.switchScreen(new Mainscreen(g));
            }
        });
        setWidth(sTitle.getWidth());
        setPosition(0, (getHeight() * 2.5f));
    }
};

btnContinue = new TextButton("Continue", btnStyle[0]) {
    {
        setName("Continue");
        addListener(new InputListener() {
            public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnContinue.getName(), "touchDown?");
                return true;
            }

            public void touchUp(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnContinue.getName(), "touchUp?");
            }
        });
        setWidth(sTitle.getWidth());
        setPosition(0, (getHeight() * 1.4f));
    }
};

btnExit = new TextButton("Exit Game", btnStyle[0]) {
    {
        setName("Exit Game");
        addListener(new InputListener() {
            public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnExit.getName(), "touchDown?");
                return true;
            }

            public void touchUp(InputEvent e, float x, float y, int pointer, int button) {
                g.debugOut(btnExit.getName(), "touchUp?");
                //Gdx.app.exit();
            }
        });
        setWidth(sTitle.getWidth());
        setPosition(0, (getHeight() * .3f));
    }
};

这就是我到目前为止所做的,它是居中的,但这样做可以通过按屏幕上实际文本左/右两侧的任意位置来单击它。

我猜sTitle是您的舞台对象


您是否直接向舞台添加按钮

如果是这样的话,我建议使用一张桌子

Table menuTable = new Table();
menuTable.add(btnNG);
menuTable.row();
menuTable.add(btnContinue);
menuTable.row();
menuTable.add(btnExit);
menuTable.setFillParent(true);
sTitle.addActor(menuTable);
注1:
删除所有按钮上的所有setSize和setPosition调用。
删除其他addActor调用

注2:

有关高级功能,请参阅

您可以将其放入
容器中,并允许其注意对齐:

Table container = new Table();
container.add(btnNG).expandX().center().row();
container.add(btnContinue).expandX().center().row();
container.add(btnExit).expandX().center().row();
// add container to some Stage
此外,您还可以在每个
center()
之后调用
padTop(x)
,以定义偏移量。
请阅读有关表格布局的更多信息。

将每个按钮的x设置为相同,以便它们对齐。将x位置设置为屏幕宽度的一半减去按钮宽度的一半,如下-->(屏幕宽度/2)-(按钮宽度/2)

请包含一些创建按钮并将纹理附加到按钮上的代码。我用一些代码更新了我的帖子。谢谢,它工作得非常好。我不知道LibGDX中的这个功能。很高兴它有帮助。:)中间应该是tablelayout中的deffault,对吗?