为什么所有对话框都使用“旧” Android 2.x样式?

hlo*_*nzo 3 delphi firemonkey appmethod delphi-xe7

我目前正在使用RAD Studio XE7,并且想知道为什么我的Android应用程序中的所有对话框都使用“旧” 2.x样式?以及如何强制我的Android应用在所有对话框(例如日期选择器和MessageDlg)中使用4.x样式?

使用StyleBook和修改AndroidManifest.xml无效。提前致谢。

Rem*_*eau 6

David I在Embarcadero Community Answers网站上发布了您相同问题的答案

为什么所有对话框都使用“旧” Android 2.x样式?

我提醒了我们的开发团队,他们在Android助手功能中发现了问题。这是研发部门提供的解决方法:

解决方法非常简单:在FMX.Helpers.Android此功能中

function GetNativeTheme: Integer;
var
  LStyleDescriptor: TStyleDescription;
begin
  Result := 0;
  if not IsGingerbreadDevice and (Screen <> nil) and (Screen.ActiveForm <> nil) and (Screen.ActiveForm.StyleBook <> nil) then
  begin
    LStyleDescriptor := TStyleManager.FindStyleDescriptor(Screen.ActiveForm.StyleBook.Style);
    // GetThemeFromDescriptor(LStyleDescriptor);
    Result := GetThemeFromDescriptor(LStyleDescriptor); // <--here the result assignment was missing
  end;
end;
Run Code Online (Sandbox Code Playgroud)

以下是Embarcadero博客文章,解释了如何应用此修复程序:

如何为XE7对话框获取Android 4.4.x样式

在FMX.Helpers.Android.pas单元中,您需要修改GetNativeTheme函数...您将在“ C:\ Program Files(x86)\ Embarcadero \ Studio \ 15.0 \ source \ fmx”中找到原始源代码单元。 ”文件夹。将“ FMX.Helpers.Android.pas”源文件复制到您的项目中,并修改该行以设置返回结果。将源文件添加到IDE中的项目中。生成您的应用程序,并查看Android KitKat设备上的现代对话框。