使用TStyleBook时的旧/深色对话框

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的情况下如何解决?

Sta*_*anE 5

我发现了问题:函数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)