Zii*_*iii 5 java android label libgdx
我在LibGdx上的多行标签上做了一个小测试,看来我无法获得换行的高度。以下是代码。理论上,aLebel的高度应大于bLabel。但是结果看起来是一样的。
码:
aLabel.setText("this is a super long long long text that need wrapping."); // line wrapped into 3 lines
aLabel.setWrap(true);
aLabel.setWidth(470);
doLog("aLabel.getHeight(): " + aLabel.getHeight());
bLabel.setText("this is short."); // unwrapped line
bLabel.setWrap(true);
bLabel.setWidth(470);
doLog("bLabel.getHeight(): " + bLabel.getHeight());
Run Code Online (Sandbox Code Playgroud)
结果:
aLabel.getHeight(): 45.0
bLabel.getHeight(): 45.0
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在LibGdx中获得实际的多行高度?提前致谢。
将小部件打包到其首选大小,仅此而已。带包装的标签的首选宽度为 0。
Label label = new Label(...);
label.setWrap(true);
label.setWidth(123);
label.setHeight(label.getPrefHeight());
Run Code Online (Sandbox Code Playgroud)
小智 5
我有这个问题多年,不小心通过设置宽度和包装标签两次解决了它。请注意,多行标签从未打算计算出它们自己的宽度,因此您必须在外部设置它们,最好是从它的父级设置。
public Label createLabel() {
// Create label and set wrap
Label label = new Label("Some long string here...", skin);
label.setWrap(true);
// Pack label
label.pack(); // This might not be necessary, unless you're changing other attributes such as font scale.
// Manual sizing
label.setWidth(textWidth); // Set the width directly
label.pack(); // Label calculates it's height here, but resets width to 0 (bug?)
label.setWidth(textWidth); // Set width again
return label;
}
Run Code Online (Sandbox Code Playgroud)
使用的 LibGDX 版本:1.6.4
我遇到了同样的问题,但 Label 类中似乎不存在解决此问题的方法。另外,我同意你的观点, getHeight() 方法应该返回 Actor 的真实高度,所以我不知道这是否是一个错误,或者该行为背后是否有原因。
无论如何,我如何解决这个问题是通过使用 BitmapFont 的 getWrappedBounds 方法。它并不短,但对于您的示例来说,它将如下所示:
doLog("aLabel.getHeight(): " + aLabel.getStyle().font.getWrappedBounds(aLabel.getText(), aLabel.getWidth()).height);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3867 次 |
| 最近记录: |