我已经尝试了以下代码:
Label label = new Label(reallyLongString, skin);
label.setWrap(true);
label.setWidth(100); // or even as low as 10
table.add(label);
...
然而我得到的仅是一条很宽的线,它延伸到了屏幕外。如何获得换行文本的标签?
这与slider always has default width或"Slider always has default width"中所见的问题相同。
您需要将标签放入表格中,并在包含标签的单元格中添加正确的大小。
UI小部件不会自行设置其大小和位置。相反,父级小部件设置每个子级的大小和位置。小部件提供可作为提示的最小、首选和最大大小。某些父级小部件(如表格)可以获得有关如何调整大小和定位子项的约束条件。要在布局中给小部件指定特定大小,保留小部件的最小、首选和最大大小,并在父级中设置大小约束。
解决方案:
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<Label> labelContainer = new Container(myLabel);
labelContainer.prefWidth(200.0f);
请注意,实际大小将根据容器层次结构而异-例如,如果放置在另一个布局对象中,则上面的labelContainer将显示不同。
大小还会根据视口等因素而变化。