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

2022-01-12 00:00:00 java libgdx

我一直在想办法让按钮上的文本居中,但找不到一种简单、多用途的方法.我可以做到,但它只适用于某个字符串,不适用于任何字符串.我想知道是否有办法让按钮上的任何字符串居中.在这种情况下,我的按钮是 185x50.

I have been trying to figure out a way to center text on a button, but can't find an easy, multi-purpose way to. I can do it, but it will only work for a certain string, not for any string. i would like to know if there is a way to center any string on a button. My button in this case is 185x50.

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

I have been able to center this button on the screen, like so:

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

任何帮助将不胜感激.:)

Any help would be much appreciated. :)

推荐答案

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

Updated the answer to libgdx version 1.7.1-SNAPSHOT:

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

The easiest way to do this, is to use the TextButton class from libgdx. The text from a TextButton is centered by default. This still works!

更新示例:

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

过时的例子:

这不再有效!

如果不想使用,可以通过以下方式获取字体宽度和高度:

If you do not want to use it, you can get the font width and height with:

    font.getBounds("Test text");

所以你可以这样做:

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

相关文章