You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi开发Android多窗体应用:返回主窗体后无法保持全屏的解决方法

Delphi Android多窗体返回后主窗体恢复全屏的解决方法

你的问题核心是关闭第二个窗体后,Android系统自动显示了状态栏和导航栏,而FMX自带的全屏属性设置没能及时覆盖系统行为。以下是几个可行的解决办法:

方法一:调用Android原生API强制设置沉浸全屏模式

直接操作Android系统的窗口和视图属性,比FMX封装的属性更可靠,尤其是在窗体切换场景下。在主窗体的FormActivate事件中添加以下代码:

uses
  Androidapi.JNI.App, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers,
  FMX.Forms;

procedure TForm1.FormActivate(Sender: TObject);
var
  Window: JWindow;
  DecorView: JView;
begin
  // 仅针对Android平台执行
  if TOSVersion.Platform = pfAndroid then
  begin
    Window := TAndroidHelper.Activity.getWindow;
    DecorView := Window.getDecorView;

    // 设置窗口标志,隐藏状态栏和导航栏
    Window.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN);
    Window.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_NO_LIMITS);
    Window.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_IN_SCREEN);

    // 启用粘性沉浸模式:用户滑动调出系统UI后会自动隐藏
    DecorView.setSystemUiVisibility(
      TJView.JavaClass.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
      TJView.JavaClass.SYSTEM_UI_FLAG_FULLSCREEN or
      TJView.JavaClass.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
      TJView.JavaClass.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
      TJView.JavaClass.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    );
  end;

  // 同步FMX窗体属性
  Self.FullScreen := True;
  Self.WindowState := wsMaximized;
  Self.BorderStyle := bsNone;
  LoadMainMenu();
end;

这段代码直接告诉Android系统,当前窗口需要完全沉浸,隐藏所有系统UI,并且设置为粘性模式,避免用户误触调出UI后无法自动恢复。

方法二:修改窗体切换逻辑(备选)

如果不想调用原生API,可以尝试不关闭第二个窗体,而是隐藏它,这样主窗体的全屏状态不会被系统重置:

  • 打开Form2时使用Form2.Show;
  • 返回主窗体时使用Form2.Hide;而非Form2.Close;
  • 若需要释放Form2资源,可在主窗体退出时再调用Form2.Free;

这种方式适合窗体复用的场景,但如果必须关闭Form2,还是推荐方法一。

方法三:调整FMX属性设置时机

你之前在FormActivate设置属性无效,可能是因为FMX属性生效时机晚于系统UI显示。可以尝试把属性设置移到主窗体的FormCreate事件中,同时确保FormActivate中的代码在LoadMainMenu之前执行:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.FullScreen := True;
  Self.WindowState := wsMaximized;
  Self.BorderStyle := bsNone;
end;

不过这种方法稳定性不如方法一,因为Android系统在窗体切换时仍可能重置UI状态。

内容的提问来源于stack exchange,提问作者Shiffles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:00:58