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