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