我在github.com上创建了一个演示项目来显示这个bug: https://github.com/ismlsmile/TestGluonMobile
该项目由模板"胶合移动 - 单视图项目"创建,我只修改BasicView.java中的文本,添加一些中文字符:
1.Windows.png:在Windows上没问题
2.Android.png:汉字无法在Android上显示
可能是字体错误。
答案 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查找这些控件的样式类。