此问题与以下问题密切相关:Why are all the dialogs are using the "old" Android 2.x style?
我正在使用Delphi Berlin(10.1),已经解决了这个问题:
但是,只要将TStyleBook拖放到表单并分配给它(例如通过右键单击组件然后“编辑自定义样式”),对话框(所有这些)就会再次变为黑暗样式:
自动创建的“修剪”样式仍然是“轻”版本(“AndroidL Light”)。是的,我检查了FMX.Helpers.Android.pas中的函数“GetNativeTheme()”分配Result
,我甚至复制了文件并将其添加到项目中。从Form1.StyleBook
删除分配会再次显示原生样式的对话框。
如何在仍然使用TStyleBook的同时解决这个问题?
答案 0 :(得分:4)
我发现了问题:函数GetNativeTheme()
正在为TStyleManager.FindStyleDescriptor()
对象条目的指定样式中使用TStyleDescription
进行搜索,以查看其中一个字符串“[LIGHTSTYLE]”或“ [DARKSTYLE]“用于目标平台。在完整样式文件中,此对象条目通常存在,但是当开始在IDE中编辑组件的自定义样式时,将使用小样式创建TStyleBook组件。它在IDE内部无法看到,但这种小样式不包含TStyleDescription
对象条目,因此无法找到暗/亮主题。默认情况下,GetThemeFromDescriptor()
会返回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
答案 1 :(得分:0)
除了StanE的答案:
除了向所有自定义样式添加StyleDescription之外,您还可以修改GetThemeFromDescriptor()
中的FMX.Helpers.Android
函数以返回默认值TJAlertDialog.JavaClass.THEME_HOLO_LIGHT
。