Codename One: выбор и стилизация собственного шрифта - PullRequest
1 голос
/ 17 марта 2020

Для моего приложения мне нужен шрифт, который хорошо масштабируется с размером дисплея устройства. Я пробовал, но не понравились системные шрифты малого, среднего и большого размера. Указание размера в мм также непривлекательно, поскольку его необходимо рассчитывать для каждого устройства. Я обнаружил, что мне нравится шрифт родной кнопки (не выбран) на устройствах iOS и Android. (На Android нативные метки, кнопки и текстовые поля имеют разные размеры шрифта; мне нужен одинаковый размер.) Поэтому я решил использовать собственный шрифт кнопки для всех моих текстовых компонентов.

Скажем, я добавляю UIID MyTextField к теме и укажите все (фон, цвета и т. д. c.), кроме шрифта. Шрифт, который я хочу получить от родной кнопки. Однако в Руководстве разработчика сказано (в разделе 3.3.13): 'всегда наследуют только от идентификаторов UIID, которые вы определили, например, MyButton' . Итак, как вам получить доступ к родному шрифту Button? Я решил установить шрифт в коде, и это работает:

// includeNativeBool == true
Font myFont = new Button().getUnselectedStyle().getFont();
...
TextField textField = new TextField();
textField.setUIID("MyTextField");
textField.getAllStyles().setFont(myFont);

Это правильное решение? Или есть способ обработки шрифта в стиле?

1 Ответ

1 голос
/ 18 марта 2020

Размер шрифта кнопки определяется в миллиметрах в темах для соответствующих ОС. Размер MM одинаков в зависимости от плотности отображения, поэтому он должен быть как можно ближе к одинаковому размеру, который вы можете получить.

То, что вы сделали, - хак. Это будет работать теоретически, но выглядит уродливо и будет вести себя непоследовательно и непредсказуемо, когда мы меняем базовый дизайн темы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...