Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx标签多行文字高度_Java_Android_Libgdx_Label - Fatal编程技术网

Java Libgdx标签多行文字高度

Java Libgdx标签多行文字高度,java,android,libgdx,label,Java,Android,Libgdx,Label,我在LibGdx上做了一个小测试,在多行标签上,似乎我不能得到包装行的高度。下面是代码。理论上,aLebel的高度应为>bLabel。但结果似乎是一样的 代码: 结果: aLabel.getHeight(): 45.0 bLabel.getHeight(): 45.0 有人知道如何在LibGdx中获得实际的多行高度吗?提前感谢。我也遇到了同样的问题,似乎Label类中没有解决这个问题的方法。另外,我同意您的看法,getHeight()方法应该返回演员的真实高度,所以我不知道这是一个bug还是这

我在LibGdx上做了一个小测试,在多行标签上,似乎我不能得到包装行的高度。下面是代码。理论上,aLebel的高度应为>bLabel。但结果似乎是一样的

代码:

结果:

aLabel.getHeight(): 45.0
bLabel.getHeight(): 45.0

有人知道如何在LibGdx中获得实际的多行高度吗?提前感谢。

我也遇到了同样的问题,似乎Label类中没有解决这个问题的方法。另外,我同意您的看法,getHeight()方法应该返回演员的真实高度,所以我不知道这是一个bug还是这种行为背后有什么原因

无论如何,我是如何通过使用BitmapFont的getWrappedBounds方法解决这个问题的。它并不短,但对于您的示例,它将如下所示:

doLog("aLabel.getHeight(): " + aLabel.getStyle().font.getWrappedBounds(aLabel.getText(), aLabel.getWidth()).height);

我有这个问题多年了,通过设置宽度和包装标签两次,意外地解决了这个问题。请注意,多行标签从来都不是用来计算自己的宽度的,因此您必须在外部设置它们,最好是从其父标签设置

公共标签createLabel(){
//创建标签并设置换行
标签=新标签(“此处有一些长字符串…”,皮肤);
label.setWrap(true);
//包装标签
label.pack();//这可能不是必需的,除非您正在更改字体比例等其他属性。
//手工上浆
label.setWidth(textWidth);//直接设置宽度
label.pack();//label在此计算其高度,但将宽度重置为0(bug?)
label.setWidth(textWidth);//再次设置宽度
退货标签;
}

使用的LibGDX版本:1.6.4这可以通过向包含表中标签的单元格添加限制来实现:

Label label = new Label("Example", new Label.LabelStyle(font, Color.WHITE));
label.setWrap(true);

Table table = new Table();
table.add(label).width(WITH);

有关如何使用表的更多信息,请转到:

将小部件的大小打包为其pref大小,仅此而已。带包装的标签的Pref宽度为0

Label label = new Label(...);
label.setWrap(true);
label.setWidth(123);
label.setHeight(label.getPrefHeight());

也许所有的文字都在同一行的宽度上?
getPrefHeight()
是否为您提供了更好的值?谢谢。不。所有文本均正确显示,以3行换行。但是,getPrefHeigh()返回0高度。是否有帮助?
Label label = new Label(...);
label.setWrap(true);
label.setWidth(123);
label.setHeight(label.getPrefHeight());