14

我尝试了以下代码:

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

然而,我得到的只是一条很宽的线,从屏幕上划出。如何获得带有包装文本的标签?

4

3 回答 3

34

这与滑块始终具有默认宽度“滑块始终具有默认宽度”中看到的问题相同。

您需要将该标签放入表格中,并将正确的大小添加到标签所在的表格单元格中。

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
于 2013-09-01T10:27:19.523 回答
3

我发现以下代码可以在没有任何表格或包装容器的情况下解决问题(对于 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);
于 2017-07-31T21:03:38.203 回答
2

如果您只想为单个小部件指定首选大小,请使用 Container 包装它。

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 放置在另一个布局对象中,则会以不同的方式显示。

大小也会因视口等而异。

于 2017-03-14T19:10:29.493 回答