Sta*_*anE 4 delphi android firemonkey delphi-10.1-berlin
此问题与以下问题高度相关:为什么所有对话框都使用“旧” Android 2.x样式?
我正在使用Delphi Berlin(10.1),该问题已得到解决:
但是,一旦将TStyleBook放到窗体中并分配给它(例如,通过右键单击一个组件,然后“编辑自定义样式”),对话框(所有对话框)将再次变为深色样式:
自动创建的“修剪”样式仍然是“ light”版本(“ AndroidL Light”)。是的,我检查了FMX.Helpers.Android.pas中的函数“ GetNativeTheme()”分配了Result,甚至复制了文件并将其添加到项目中。从Form1.StyleBook再次显示本机样式对话框中删除任务。
在仍然继续使用TStyleBook的情况下如何解决?
我发现了问题:函数GetNativeTheme()正在以TStyleManager.FindStyleDescriptor()指定的样式搜索TStyleDescription对象条目,以查看目标平台是否使用字符串“ [LIGHTSTYLE]”或“ [DARKSTYLE]”之一。在完整样式文件中,通常会存在该对象条目,但是当开始在IDE中编辑组件的自定义样式时,会创建一个TStyleBook组件,而该样式只有一个小样式。在IDE中无法看到它,但是这种小样式不包含TStyleDescription对象条目,因此无法找到暗色/亮色主题。默认情况下,GetThemeFromDescriptor()returns 0似乎与深色/旧样式相对应。
我通过双击TStyleBook组件,将样式保存到文件(* .style),在文本编辑器中打开文件并简单地手动添加TStyleDescription对象条目来解决了该问题。保存并加载回IDE。现在,所有对话框都使用正确的灯光样式主题。
这里再次作为文本:
object TStyleDescription
StyleName = 'Description'
Author = 'Embarcadero Technologies Inc.'
AuthorURL = 'www.embarcadero.com'
PlatformTarget = '[ANDROID][ANDROIDL][LIGHTSTYLE][DEFINEFONTSTYLES]'
MobilePlatform = True
Title = 'AndroidL Light'
Version = '1.0'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |