我可以暂时更改LibGDX Label lineHeight吗?

时间:2017-05-01 16:16:31

标签: libgdx label scene2d

我有一个用Hiero构建的位图字体,我在scene2d Labels中使用它。

在单个Label实例中,我需要减少字体的lineHeight值,但是我想保留其他标签(使用相同的字体)完整,所以他们应该保留默认的lineHeight字体。

我试图像这样调整价值:

label.getStyle().font.getData().setLineHeight(localReducedValue);

然而,这已经修改了所有标签 - 回想起来,这似乎是合乎逻辑的,因为我正在修改LabelStyle本身。

遗憾的是label.setLineHeight(localReducedValue)之类的内容并不存在,所以此时我看到了两种可能的解决方案:

  1. 创建字体副本,将其lineHeight设置为我需要的值,并使用该字体创建单独的LabelStyle;或
  2. 为自己编写一个实现setLineHeight的自定义标签。
  3. 第一个想法似乎很浪费,第二个想法可能有点复杂,所以我希望有更简单的方法来实现标签中的临时线高度。

2 个答案:

答案 0 :(得分:2)

Libhan Sweet,LibGDX的核心开发人员之一,善意地提出了a solution,这是完美的:

  

覆盖标签#布局,设置行高,调用super.layout,重新设置行高。你需要使用布局而不是绘制,因为布局计算和缓存字形位置,绘制只是绘制它们。

答案 1 :(得分:-1)

您可以通过以下操作更改单个LabelStyle的{​​{1}}:

Label

然后你可以修改样式而不影响所有标签。