代号一:选择和设计原生字体

Codename One: Choosing and Styling a Native Font

对于我的应用程序,我需要一种能够很好地适应设备显示大小的字体。 我试过但不喜欢系统字体小、中和大。 以毫米为单位指定大小也没有吸引力,因为必须为每个设备计算它。 我发现我喜欢 iOS 和 Android 设备上原生按钮(未选中)的字体。 (在 Android 上,原生标签、按钮和文本字段具有不同的字体大小;我想要一个统一的大小。) 所以我决定为我的所有文本组件使用本机按钮字体。

假设我将 UIID MyTextField 添加到主题并指定除字体之外的所有内容(背景、颜色等)。 我想从本机 Button 派生的字体。 但是,开发人员指南说(在 3.3.13 中):'always inherit only from UIID’s you defined e.g. MyButton'。 那么如何访问本机 Button 字体呢?我决定在代码中设置字体并且有效:

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

这是正确的解决方案吗?或者有没有办法处理样式中的字体?

按钮字体大小在各个操作系统的主题中以毫米为单位定义。 MM 尺寸根据显示密度是统一的,因此它应该是您可以获得的最接近统一尺寸的东西。

你所做的是黑客行为。它在理论上可行,但它看起来很丑陋,并且在我们更改基础原生主题设计时会表现得不一致且不可预测。