Codename One:选择和设置本机字体的样式



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

假设我将UIIDMyTextField添加到主题中,并指定除字体之外的所有内容(背景、颜色等(。我想从本机按钮派生的字体。但是,开发人员指南(在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);

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

按钮字体大小在相应操作系统的主题中以毫米为单位定义。MM大小是基于显示密度的统一大小,所以它应该是最接近统一大小的。

你所做的是一次黑客攻击。它在理论上是可行的,但它看起来很丑陋,当我们改变基本的本土主题设计时,它的行为会不一致和不可预测。

最新更新