2013-09-01 19 views
11

一個標籤我嘗試下面的代碼:libgdx - 如何讓裹着文本

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

,但我得到的是一個非常寬的線條繪製在屏幕上。

回答

31

這與"How to get a Label to the right size""Slider always has default width"中所見的問題相同。

您需要將該標籤放入表格中,並將正確的尺寸添加到標籤所在表格的單元格中。

UI小部件不會設置自己的大小和位置。相反,父窗口小部件會設置每個小孩的大小和位置。小部件提供父級可用作提示的最小,首選和最大大小。一些家長小部件(如表格)可能會受到限制,無法確定孩子的大小和位置。要在佈局中爲小部件指定特定的大小,小部件的最小值,首選大小和最大大小將單獨保留,並在父項中設置大小約束。

來源: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 
+0

而不是我使用[此WidgetGroup實現](https://github.com/MobiDevelop/maps-editor/blob/master/maps-editor/src/com/mobidevelop/maps/editor/ui/Horizo​​ntalFlowGroup.java )(請參閱[這個問題](http://stackoverflow.com/questions/20303378/need-an-analog-for-inline-block-from-css-in-scene2d-ui)解釋爲什麼我需要它)。是否只能將文本包裝在Table內的Label中,或者任何WidgetGroup實現都可以提供該功能? – gvlasov

+1

我會試一試,因爲它基於相同的系統。所以我認爲小組也應該提供相同的功能。 Regualy設置了容器的寬度,而不是標籤的寬度或者自身的寬度。這也應該是組的規則 – BennX

+0

此方法在TextButtons中不可用 –

1

如果你只是想指定首選的大小單部件,與容器包裹。

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上述將顯示不同的在另一個佈局對象中。

規模也將根據檢視變化等

0

我發現這個代碼可以解決問題沒有任何表或包裝容器(用於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);