此问题与以下问题密切相关:Why are all the dialogs are using the "old" Android 2.x style?
我使用的是Delphi Berlin(10.1),这个问题已经解决了:
android - 使用TStyleBook时的旧/暗对话框-LMLPHP
但是,只要将tstylebook拖放到表单并分配给它(例如,右键单击某个组件,然后“编辑自定义样式”),对话框(所有对话框)就会再次变为深色样式:
android - 使用TStyleBook时的旧/暗对话框-LMLPHP
自动创建的“修剪”样式仍然是“灯光”版本(“androidl灯光”)。是的,我检查了fmx.helpers.android.pas中的函数“getNativeTheme()”,我甚至复制了文件并将其添加到项目中。从Result中删除赋值将再次显示本机样式的对话框。
如何在继续使用tstylebook的同时解决这个问题?

最佳答案

我发现了一个问题:函数GetNativeTheme()正在为一个TStyleManager.FindStyleDescriptor()对象条目在指定的样式中用TStyleDescription搜索,以查看是否有一个字符串“[lightstyle]”或“[darkstyle]”用于目标平台。在一个完整的样式文件中,这个对象条目通常是存在的,但是当开始编辑IDE中组件的自定义样式时,tstylebook组件是用一个小样式创建的。在ide中看不到它,但是这个小样式不包含TStyleDescription对象条目,因此无法找到暗/光主题。默认情况下,GetThemeFromDescriptor()返回0,这似乎与暗/旧样式相对应。
我通过双击tstylebook组件解决了这个问题,将样式保存到一个文件(.style),在文本编辑器中打开该文件,然后简单地手动添加TStyleDescription对象条目。保存并加载回IDE。现在所有对话框都使用正确的灯光样式主题。
android - 使用TStyleBook时的旧/暗对话框-LMLPHP
此处再次显示为文本:

  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

10-06 02:20