我一直试图想出一种方法来将文本置于按钮上,但却无法找到一种简单,多用途的方法。我可以做到,但它只适用于某个字符串,而不适用于任何字符串。我想知道是否有办法将任何字符串置于按钮上。在这种情况下我的按钮是185x50。
我能够将这个按钮集中在屏幕上,如下:
buttonX = WIDTH / 2 - (screen.getRegionWidth() / 2);
buttonY = HEIGHT / 2 - (screen.getRegionHeight() / 2);
非常感谢任何帮助。 :)
答案 0 :(得分:54)
更新了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;
答案 1 :(得分:12)
对于较新版本的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);
答案 2 :(得分:0)
尝试以下方法:
label.setPosition(Gdx.graphics.getWidth()/2-(label.getPrefWidth()/2),Gdx.graphics.getHeight()-(label.getPrefHeight()/2));