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
就像是:
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);