Libgdx:是否有一种简单的方法可以将按钮上每个轴的文本居中?

我一直试图想出一种方法来将文本放在按钮上,但找不到一种简单,多用途的方法。 我可以做到,但它只适用于某个字符串,而不适用于任何字符串。 我想知道是否有办法将任何字符串置于按钮上。 在这种情况下我的按钮是185×50。

我已经能够将这个按钮集中在屏幕上,如下所示:

buttonX = WIDTH / 2 - (screen.getRegionWidth() / 2); buttonY = HEIGHT / 2 - (screen.getRegionHeight() / 2); 

任何帮助将非常感激。 🙂

更新了libgdx版本1.7.1-SNAPSHOT的答案:

最简单的方法是使用libgdx中的TextButton类。 TextButton中的文本默认居中。 这仍然有效!

更新示例:

 final BitmapFont font = new BitmapFont(); final String text = "Test"; final GlyphLayout layout = new GlyphLayout(font, text); // or for non final texts: layout.setText(font, text); final float fontX = objectX + (objectWidth - layout.width) / 2; final float fontY = objectY + (objectHeight + layout.height) / 2; font.draw(batch, layout, fontX, fontY); 

过时的例子:

这不再有效!

如果您不想使用它,可以使用以下命令获取字体宽度和高度:

  font.getBounds("Test text"); 

所以你可以这样做:

  String fontText = ""; fontX = buttonX + buttonWidth/2 - font.getBounds(fontText).width/2; fontY = buttonY + buttonHeight/2 + font.getBounds(fontText).height/2; 

对于较新版本的libgdx,函数BitMapFont.getBounds()不再存在于api中。 您可以使用GlyphLayout来绑定。例如,

 BitmapFont font; SpriteBatch spriteBatch; //... Load any font of your choice first FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator( Gdx.files.internal("myFont.ttf") ); FreeTypeFontGenerator.FreeTypeFontParameter freeTypeFontParameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); freeTypeFontParameter.size = size; fontGenerator.generateData(freeTypeFontParameter); font = fontGenerator.generateFont(freeTypeFontParameter); //Initialize the spriteBatch as requirement GlyphLayout glyphLayout = new GlyphLayout(); String item = "Example"; glyphLayout.setText(font,item); float w = glyphLayout.width; font.draw(spriteBatch, glyphLayout, (Game.SCREEN_WIDTH - w)/2, y); 

请尝试以下方法:

 label.setPosition(Gdx.graphics.getWidth()/2-(label.getPrefWidth()/2),Gdx.graphics.getHeight()-(label.getPrefHeight()/2));