У gluonmobile ошибка шрифта на ОС Android
Я создал демонстрационный проект на github.com, чтобы показать эту ошибку: https://github.com/ismlsmile/TestGluonMobile
Проект создается по шаблону "Gluon Mobile - Single View Project", и я только изменяю текст в BasicView.java, чтобы добавить некоторые китайские символы:
1.Windows.png: это нормально в Windows
2.Android.png: китайский символ не может отображаться на Android
Вполне вероятно, что ошибка шрифта.
1 ответ
По умолчанию Gluon Mobile использует шрифт Roboto, который не включает китайские иероглифы.
Один из простых способов решить эту проблему - установить любой из системных шрифтов Android, который их включает.
С помощью Font.getFamilies()
на моем устройстве Android я обнаружил это: 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 должен быть установлен на сцену, так как этот элемент управления не является частью представления.
В классе 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, чтобы узнать о классах стилей для этих элементов управления.