如何使用包装文本获取标签?

时间:2013-09-01 10:22:31

标签: java libgdx label

我试过以下代码:

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

然而我得到的只是一条非常宽的线条,从屏幕上取下来。如何使用包装文本获取标签?

3 个答案:

答案 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

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

类似的东西:

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);