我试过以下代码:
Label label = new Label(reallyLongString, skin);
label.setWrap(true);
label.setWidth(100); // or even as low as 10
table.add(label);
...
然而我得到的只是一条非常宽的线条,从屏幕上取下来。如何使用包装文本获取标签?
答案 0 :(得分:32)
这与slider always has default width或"Slider always has default width"中的问题相同。
您需要将该标签放入表中,并将正确的大小添加到标签所在表格的单元格中。
UI小部件不会设置自己的大小和位置。相反,父窗口小部件设置每个子项的大小和位置。窗口小部件提供父级可用作提示的最小,首选和最大大小。某些父窗口小部件(如Table)可以为如何调整子项的大小和位置提供约束。要在窗体中为窗口小部件指定特定大小,窗口小部件的最小,首选和最大大小将保持不变,并且在父窗口中设置大小约束。
来源:From the 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
答案 1 :(得分:2)
如果您只想为单个窗口小部件指定首选大小,请使用容器包装它。
https://github.com/libgdx/libgdx/wiki/Scene2d.ui#layout-widgets
类似的东西:
Container<Label> labelContainer = new Container(myLabel);
labelContainer.prefWidth(200.0f);
请记住,实际大小会因容器层次结构而异 - 例如,如果置于另一个布局对象中,则上面的labelContainer将以不同方式显示。
大小也会因视口等而异。
答案 2 :(得分:2)
我发现以下代码可以解决没有任何表或包装容器的问题(对于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);