我可以临时更改 LibGDX Label lineHeight 吗?
Can I change LibGDX Label lineHeight temporarily?
我有一个用 Hiero 构建的位图字体,我在 scene2d 标签中使用它。
在单个 Label 实例中,我需要减小字体的 lineHeight 值,但我想保持其他 Label(使用相同字体)不变,因此它们应保持字体的默认 lineHeight。
我试过像这样简单地调整值:
label.getStyle().font.getData().setLineHeight(localReducedValue);
但是,这已经修改了所有地方的所有标签 -- 回想起来,这似乎是合乎逻辑的,因为我正在修改 LabelStyle 本身。
不幸的是 label.setLineHeight(localReducedValue)
之类的东西不存在,所以此时我看到两个可能的解决方案:
- 创建一个字体副本,将其lineHeight设置为我需要的值,并使用该字体创建一个单独的LabelStyle;或
- 为自己写一个实现 setLineHeight 的自定义标签。
第一个想法似乎很浪费,第二个可能有点复杂,所以我希望有一种更简单的方法来实现标签中的临时 lineHeight。
您可以通过执行以下操作来更改单个 Label
的 LabelStyle
:
//skin is the skin that you use
Label myLabel = new Label(text, new LabelStyle(skin.get(LabelStyle.class)));
然后就可以在不影响所有标签的情况下修改样式了。
Nathan Sweet,LibGDX 的核心开发人员之一,亲切地建议 a solution,效果很好:
Override Label#layout, set line height, call super.layout, set line height back. You need to use layout and not draw because layout computes and caches the glyph positions, draw just draws them.
我有一个用 Hiero 构建的位图字体,我在 scene2d 标签中使用它。
在单个 Label 实例中,我需要减小字体的 lineHeight 值,但我想保持其他 Label(使用相同字体)不变,因此它们应保持字体的默认 lineHeight。
我试过像这样简单地调整值:
label.getStyle().font.getData().setLineHeight(localReducedValue);
但是,这已经修改了所有地方的所有标签 -- 回想起来,这似乎是合乎逻辑的,因为我正在修改 LabelStyle 本身。
不幸的是 label.setLineHeight(localReducedValue)
之类的东西不存在,所以此时我看到两个可能的解决方案:
- 创建一个字体副本,将其lineHeight设置为我需要的值,并使用该字体创建一个单独的LabelStyle;或
- 为自己写一个实现 setLineHeight 的自定义标签。
第一个想法似乎很浪费,第二个可能有点复杂,所以我希望有一种更简单的方法来实现标签中的临时 lineHeight。
您可以通过执行以下操作来更改单个 Label
的 LabelStyle
:
//skin is the skin that you use
Label myLabel = new Label(text, new LabelStyle(skin.get(LabelStyle.class)));
然后就可以在不影响所有标签的情况下修改样式了。
Nathan Sweet,LibGDX 的核心开发人员之一,亲切地建议 a solution,效果很好:
Override Label#layout, set line height, call super.layout, set line height back. You need to use layout and not draw because layout computes and caches the glyph positions, draw just draws them.