此问题与以下问题高度相关:Why are all the dialogs are using the "old" Android 2.x style?
我正在使用 Delphi Berlin (10.1),这个问题已经解决了:
但是,一旦将 TStyleBook 拖放到表单并分配给它(例如,通过右键单击一个组件然后“编辑自定义样式”),对话框(所有对话框)都会再次变为深色样式:
自动创建的“trimmed”样式仍然是“light”版本(“AndroidL Light”)。是的,我检查了 FMX.Helpers.Android.pas 中的函数“GetNativeTheme()”分配了 Result
,我什至复制了文件并将其添加到项目中。从 Form1.StyleBook
中删除分配,再次显示 native 样式的对话框。
如何在继续使用 TStyleBook 的同时解决这个问题?
最佳答案
我发现了问题:函数 GetNativeTheme()
正在使用 TStyleManager.FindStyleDescriptor()
在分配的样式中搜索 TStyleDescription
对象条目, 查看字符串“[LIGHTSTYLE]”或“[DARKSTYLE]”之一是否用于目标平台。在一个完整的样式文件中,这个对象条目通常存在,但是当开始在 IDE 中编辑一个组件的自定义样式时,一个 TStyleBook 组件只创建一个小样式。 IDE里面是看不到的,但是这个小style里面没有TStyleDescription
对象入口,所以是看不到dark/light主题的。默认情况下,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
关于android - 使用 TStyleBook 时的旧/暗对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610374/