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));