libgdx – 如何使用包装文本获取Label

我尝试了以下代码:

Label label = new Label(reallyLongString, skin); label.setWrap(true); label.setWidth(100); // or even as low as 10 table.add(label); ... 

然而我得到的只是一条非常宽的线条,从屏幕上消失。

这与“如何将标签设置为正确大小”或“滑块始终具有默认宽度”中所示的问题相同 。

您需要将该标签放入表中,并将正确的大小添加到标签所在表的单元格中。

UI小部件不设置自己的大小和位置。 相反,父窗口小部件设置每个子项的大小和位置。 窗口小部件提供父级可用作提示的最小,首选和最大大小。 某些父窗口小部件(如Table)可以为如何调整子项的大小和位置提供约束。 要在窗体中为窗口小部件指定特定大小,窗口小部件的最小,首选和最大大小将保持不变,并且在父窗口中设置大小约束。

来源: 来自libgdx wiki Scene2D

解决方案:

 Label label = new Label(reallyLongString, skin); label.setWrap(true); label.setWidth(100); // or even as low as 10 table.add(label).width(10f);// <--- here you define the width 

如果您只想为单个窗口小部件指定首选大小,请使用Container包装它。

https://github.com/libgdx/libgdx/wiki/Scene2d.ui#layout-widgets

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Container.html

就像是:

 Container 

请记住,实际大小将根据容器层次结构而有所不同 – 例如,如果放置在另一个布局对象中,则上面的labelContainer将以不同方式显示。

大小也会根据视口等而有所不同。

我发现这段代码可以解决没有任何表或包装容器的问题(对于libgdx-1.9.6)

  label = new Label("Some label", skin); label.setPosition(600, 50); label.setWidth(200); label.setHeight(50); label.setWrap(true); stage.addActor(label);