当前位置: 首页 > 面试题库 >

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

姚俊材
2023-03-14
问题内容

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

我已经能够在屏幕上居中放置此按钮,如下所示:

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;


 类似资料:
  • 问题内容: 我正在尝试创建使用此lambda函数单击的按钮的列表: 似乎有点工作,但它会立即打印按钮文本,即它不等待用户单击按钮。 关于如何使其对按钮单击做出响应的任何想法? 问题答案: 试图在lambda中完成所有这些操作是错误的方法。简直太令人困惑了,即使不是不可能做您想做的事情。而是创建一个可以完成工作的方法,并仅将lambda用作调用该函数的一种方式:

  • 我一直在尝试制作这样的GUI: 然而,我遇到的困难是,我需要使按钮的文本可变-每个按钮应该提供不同的选项,可以在文本长度上有所不同。虽然这本身并不困难,但我尝试了无数不同的方法,但我无法让按钮居中,尽管它们的文本长度。无论我尝试什么,我总是有以下问题之一: 按钮不居中(左边有空间,但它们超过了右边的窗口) 由于某种原因,问题和Goodratio根据按钮大小更改位置 我不知道该怎么做。有没有人对做这

  • 在Borland VCL库中,几乎所有控件都有提示属性。在运行时,当您将鼠标放在相应的控件上时,当您移动鼠标时,一个带有提示文本的小框会弹出并再次消失,例如Windows资源管理器和其他程序中的帮助消息,当鼠标光标放在按钮上时。 JavaFX中是否有类似的概念(实际上,我使用的是ScalaFX)? 当然,我可以创建一个没有装饰的新舞台,添加一些鼠标监听器等,但是它不是已经在某个地方可用了吗?

  • 问题内容: 我不在乎有什么区别。我只想知道内容是否不同。 问题答案: 低级方式: 高级方式:

  • null 在读取数据时,我希望1个用户的所有数据都落入同一个spark分区。单个spark分区可以有1个以上的用户,但它应该有所有这些用户的所有行。 目前,我使用的是:sparksession.read.parquet(“../userdata”).repartition(200,col(“userid”)) (还尝试了使用自定义分区器的partitionBy;操作顺序:DataFrame->RD

  • 问题内容: 我正在尝试将长度不定的多个数据列表输出到CSV文件。每个列表应该是输出CSV文件中的一列。有直接的做事方法吗?如果我将每个列表输出为一行,那么我将遍历每个列表并在结束时输出返回值,但是这种方法在按列工作时不起作用。 我曾想过一次逐项检查所有列表并增加一个计数器,但这也会失败,因为有些列表比另一些​​更长。为了解决这个问题,我将不得不在每次迭代时检查计数器是否在每个列表的末尾,这在计算方