我尝试了以下代码:
Label label = new Label(reallyLongString, skin);
label.setWrap(true);
label.setWidth(100); // or even as low as 10
table.add(label);
...
然而,我得到的只是一条很宽的线,从屏幕上划出。如何获得带有包装文本的标签?
这与滑块始终具有默认宽度或“滑块始终具有默认宽度”中看到的问题相同。
您需要将该标签放入表格中,并将正确的大小添加到标签所在的表格单元格中。
UI 小部件不设置自己的大小和位置。相反,父窗口小部件设置每个孩子的大小和位置。小部件提供父级可以用作提示的最小、首选和最大大小。一些父窗口小部件,例如 Table,可以限制子窗口的大小和位置。要在布局中为小部件指定特定尺寸,小部件的最小、首选和最大尺寸将保持不变,并且在父级中设置尺寸约束。
解决方案:
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
我发现以下代码可以在没有任何表格或包装容器的情况下解决问题(对于 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);
如果您只想为单个小部件指定首选大小,请使用 Container 包装它。
https://github.com/libgdx/libgdx/wiki/Scene2d.ui#layout-widgets
就像是:
Container<Label> labelContainer = new Container(myLabel);
labelContainer.prefWidth(200.0f);
请记住,实际大小将根据容器层次结构而有所不同 - 例如,如果将上面的 labelContainer 放置在另一个布局对象中,则会以不同的方式显示。
大小也会因视口等而异。