使用LibGDX中的文本内容自动调整标签大小?

在LibGDX中,我想添加一些长文本内容到几个标签。 我在循环中创建这些标签,每次迭代的文本内容都不相同。 我希望Label具有完全适合文本的大小。 有没有办法做到这一点? 我没有setWrap(true)的标签。

作为参考,考虑一个标签:

 +------------------+ | | +------------------+ 

其中一份可能是:

 +------------------------------------+ | Lorem ipsum dolor sit amet, | | consectetur adipiscing elit. | | Nec vero alia sunt quaerenda | | contra Carneadeam illam sententiam.| +------------------------------------+ 

另一个应该调整的内容:

 +------------------------------------+ | Uterque enim summo bono fruitur, | | id est voluptate. Illud non | | continuo, ut aeque incontentae. | | Occultum facinus esse potuerit, | | gaudebit; Multoque hoc melius nos | | veriusque quam Stoici. Id Sextilius| | factum negabat. Ita nemo beato | | beatior. | +------------------------------------+ 

编辑:

请注意水平包装工作正常。 我需要标签大小来垂直调整文本内容。 宽度是固定的。 身高不是。

这可能不是你正在寻找的,但它可能有帮助。 我做了这个函数,用空格replace了string中间的最接近的空间。 没有太多的适应多线

它产生这个:

 +--------------------------+ |Lorem ipsum dolor sit amet| +--------------------------+ +--------------+ |Lorem ipsum | |dolor sit amet| +--------------+ 

代码 :

 public cutAtMiddle() { // Init values needed for the function int delta = getText().length; // This need to be high as possible int computedDelta; // We declare here so we don't have to do it in the for loop int charIndexToReplace = 0; // The char index to replace by the space line // Search for the best index to replace for (int i = 0; i < label.getText().length; i++) { // If char is a space if (getText().chars[i] == ' ') { // Compute distance from the middle of the string computedDelta = Math.abs(getText().length / 2 - i); // If less than current delta : keep in mind index if (computedDelta < delta) { delta = computedDelta; index = i; } } } // Replace space by space line getText().chars[index] = '\n'; } 

然后我使用它是这样的:

 if (myLabel.getWidth() > maxWidth) myLabel.cutAtMiddle(); 

一行一行地做同样的事情并不是特别的,中间的事情并不难。 希望能帮助到你