1

我想创建一个包含可点击条目的滚动动态列表。我的问题是条目的字体大小。字体太小了。我是否必须为此创建一个单独的皮肤,或者是否有某种方法可以放大现有字体。我目前正在使用未更改的uiskin。这是我的代码。我可以添加列表条目,它们都是可点击的(此处不包含侦听器代码),但显示时文本太小了。

    skin = new Skin(Gdx.files.internal("uiskin.json"));
    shotArrayList = new ArrayList<String>();
    shotList = new List(shotArrayList.toArray(),skin);
    ScrollPane scrollPane2 = new ScrollPane(shotList, skin);
    table.add(scrollPane2).width(w*0.7f).height(h*0.3f);

我只将滚动窗格放在表格单元格中,以帮助与其他演员一起放置在舞台上。我认为这并没有真正影响我的字体大小问题。这种创建动态滚动列表的方法效果很好,但我愿意接受更好的解决方案。

我的问题只是字体大小。我尝试使用标签的 ArrayList,因为我可以将比例应用于标签,但是当我将 ArrayList 转换为数组时,我的条目都只是简单地说“标签”。我希望我已经解释了我的问题并急切地等待解决方案。

4

1 回答 1

3

在 uiskin.json 文件中,您会找到指定字体的行,例如:

com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } }

您可以在此处指定您喜欢的任何字体,并使用字体名称“default-font”在文件中的其他位置引用它。您需要使用BMFont等位图字体生成器以所需大小预先生成字体。

您可以从 BMFont 导出字体并将其添加到您的资产文件夹中。

第二个选项是缩放已经在皮肤中使用的字体,尽管字体放大后看起来永远不会很好。您可以使用以下内容将字体大小加倍,假设“默认字体”是您的字体名称。

skin.getFont("default-font").scale(2);

您可以通过打开字体的线性过滤来稍微改进缩放。

skin.getFont("default-font").getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);

所以你的最终代码看起来像这样

skin = new Skin(Gdx.files.internal("uiskin.json"));
skin.getFont("default-font").scale(2);
skin.getFont("default-font").getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
shotArrayList = new ArrayList<String>();
shotList = new List(shotArrayList.toArray(),skin);
ScrollPane scrollPane2 = new ScrollPane(shotList, skin);
table.add(scrollPane2).width(w*0.7f).height(h*0.3f);

如果您想了解更高级的字体缩放技术,那么您可能会对距离场字体感兴趣。

于 2014-03-11T20:19:38.457 回答