我按照示例在Android应用中加载自定义字体(Segoe UI):
True Type Font Iconography for Android and iOS Apps
我的问题是IDE(RAD Studio 10.1 Berlin)不会将默认值保存到FMX文件(表单文件)。在设计时,默认字体似乎已经是" Segoe UI",因此IDE在Object Inspector中仅显示(Default)
,因此不会将该值存储到FMX表单文件中。 但是,Android中的默认字体是" Roboto",而不是" Segoe UI",应用程序确实使用" Roboto"作为运行时的默认字体。
因此,不会为不同的目标平台保留对象Inspector中的默认值。这非常烦人!
这是IDE中的(逻辑)错误吗?如何禁用此IDE功能,或者在设计时(在Windows下的IDE中设计时意外也是默认值)显式设置值并将其保留为目标平台(在此案例Android)?
我尝试进入FMX表单文件的文本模式并手动设置值,但是当切换回设计模式时,IDE会再次将Object Inspector中的值更改回(Default)
,并且再次回到文本模式,该行已被删除。我想/需要在设计时设置它,而不是运行时,但我无法实现它。
我还需要其他属性的默认值,而不仅仅是字体。
答案 0 :(得分:3)
这是设计的。属性的默认值不会保存在DFM / FMX文件中,除非属性通过property declaration本身的nodefault
或stored=true
指令明确请求它。在不被要求的情况下保存默认值会使DFM / FMX资源膨胀。
除非您派生新组件来覆盖其属性声明,否则无法覆盖此行为。
您不能在设计时基于每个平台指定不同的默认值。只有一个属性,只有一个默认值。如果在运行时需要不同的每个平台值,则必须:
创建单独的每平台视图,并在每个视图中分配不同的属性值。
在运行时在代码中设置属性值,例如在表单的OnCreate
事件中。
答案 1 :(得分:0)
针对您的问题的第三种解决方案可能是使用样式来定义组件的默认字体。这样,字体不是由DFM定义的,而是由样式本身定义的。
当然,如果您在开始之前没有使用过样式,可能会有点困难。但是一旦掌握了它,您将看到样式可以提供的巨大优势,特别是在具有大量表单的项目中,因为您只需要更改样式,并且更改会影响使用该特定样式的每个组件。
说到样式,你确定你还没有使用它们,样式可能会覆盖你的字体设置,这可能解释为什么其他人的建议不起作用?