【发布时间】:2020-06-28 16:53:49
【问题描述】:
对于我的应用,我需要一种能很好地适应设备显示尺寸的字体。 我试过但不喜欢系统字体小、中、大。 以毫米为单位指定尺寸也没有吸引力,因为它必须针对每个设备进行计算。 我发现我喜欢 iOS 和 Android 设备上的原生按钮(未选择)的字体。 (在 Android 上,原生标签、按钮和文本字段有不同的字体大小;我想要一个统一的大小。) 所以我决定为我的所有文本组件使用原生按钮字体。
假设我将 UIID MyTextField 添加到主题并指定除字体之外的所有内容(背景、颜色等)。 我想从本机按钮派生的字体。 但是,开发人员指南说(在 3.3.13 中):'总是只从您定义的 UIID 继承,例如我的按钮'。 那么如何访问原生 Button 字体呢?我决定在代码中设置字体并且有效:
// includeNativeBool == true
Font myFont = new Button().getUnselectedStyle().getFont();
...
TextField textField = new TextField();
textField.setUIID("MyTextField");
textField.getAllStyles().setFont(myFont);
这是正确的解决方案吗?或者有没有办法处理Style中的字体?
【问题讨论】:
-
P.S.我没有覆盖主题中的 Button 而是使用我自己的 MyButton 等。
-
如果您喜欢原生字体,只需使用您想要的大小即可。无需使用您报告的代码。毫米是设置尺寸的更自然的方式,您不需要计算任何东西,以像素为单位的实际尺寸是自动计算的。如果您想了解原生 Android 和 iOS 主题的样式,可以从以下位置下载 res 文件:github.com/codenameone/codenameone-skins/tree/master/Phones
-
是的,我现在使用“毫米”(不是真正的毫米),另请参阅答案下方的 cmets。感谢您的链接。
标签: fonts codenameone native derived