gluonmobile在android os上有字体错误

时间:2017-02-06 07:25:13

标签: gluon gluon-mobile

我在github.com上创建了一个演示项目来显示这个bug: https://github.com/ismlsmile/TestGluonMobile

该项目由模板"胶合移动 - 单视图项目"创建,我只修改BasicView.java中的文本,添加一些中文字符:

1.Windows.png:在Windows上没问题

2.Android.png:汉字无法在Android上显示

可能是字体错误。

1 个答案:

答案 0 :(得分:1)

默认情况下,Gluon Mobile使用Roboto字体,但不包含中文字符。

解决此问题的一种简单方法是设置包含它们的任何Android系统字体。

在我的Android设备上使用Font.getFamilies()我发现了这个:Noto Sans CJK SC Regular。可能你也会有另外一个类似的家庭。

因此,您可以使用以下内容轻松创建css文件(src/main/resources/style.css):

.view {
    -fx-font-family: "Noto Sans CJK SC Regular";
}

然后将其加载到您的视图中:

public BasicView(String name) {
    super(name);

    getStylesheets().add(getClass().getResource("/style.css").toExternalForm());
    ...
}

这应该有效。

修改

为了将字体应用于AppBar,必须将css设置为Scene,因为此控件不是视图的一部分。

在MobileApplication类中:

@Override
public void postInit(Scene scene) {
    Swatch.BLUE.assignTo(scene);
    scene.getStylesheets().add(getClass().getResource("/style.css").toExternalForm());
}

然后,您需要将字体应用于root,以及使用不同字体的所有不同控件,例如AppBar

.root,
.app-bar > .title-box > .label {
    -fx-font-family: "Noto Sans CJK SC Regular";
}

请注意,您可以使用ScenicView查找这些控件的样式类。