У 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, чтобы узнать о классах стилей для этих элементов управления.

Другие вопросы по тегам