全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

MAUI怎么实现全屏显示 MAUI沉浸式模式教程

MAUI实现沉浸式全屏需分平台处理:Android可隐藏状态栏和导航栏,iOS仅能隐藏状态栏;需配合布局Padding、SafeArea适配及平台服务封装,注意手势、键盘与横竖屏兼容性。

MAUI 实现全屏显示(即“沉浸式模式”)主要通过平台特定代码控制状态栏和导航栏的可见性,Android 和 iOS 的实现方式不同,Windows/macOS 不支持传统意义上的沉浸式全屏。核心思路是:隐藏系统 UI(状态栏、导航栏),让应用内容铺满整个屏幕,同时避免内容被系统栏遮挡。

Android:隐藏状态栏 + 导航栏(真正沉浸)

在 MAUI 中需通过 Android 平台专属代码 设置 Window 的 DecorView 系统 UI 标志:

  • Platforms/Android/MainActivity.csOnCreate 方法中(确保在 base.OnCreate(savedInstanceState) 之后)添加:
if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
{
    Window.InsetsController?.Hide(WindowInsets.Type.StatusBars() | WindowInsets.Type.NavigationBars());
    Window.InsetsController?.SystemBarsBehavior = Android.Graphics.Insets.SystemBarsBehavior.ShowTransientBarsBySwipe;
}
else
{
    var decorView = Window.DecorView;
    decorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.Fullscreen
        | SystemUiFlags.HideNavigation
        | SystemUiFlags.ImmersiveSticky
        | SystemUiFlags.LayoutFullscreen
        | SystemUiFlags.LayoutHideNavigation);
}
  • 为防止内容被隐藏的系统栏“顶上去”,需在页面根布局(如 ContentPage)设置:Padding="0",并确保容器(如 GridScrollView)不自动预留系统栏空间;
  • 若需动态切换沉浸模式(如点击按钮进入/退出),可封装上述逻辑为方法,并在需要时调用。

iOS:隐藏状态栏(有限沉浸)

iOS 不允许隐藏底部安全区域(Home Indicator),仅能隐藏顶部状态栏:

  • Platforms/iOS/AppDelegate.cs 中重写 GetStatusBarHidden
public override bool GetStatusBarHidden(UIApplication application) => true;
  • 同时在 Info.plist 中添加键 UIViewControllerBasedStatusBarAppearance,值设为 YES(确保状态栏控制权交由 ViewController);
  • iOS 页面内容默认会避开安全区域,如需延伸到底部,请对关键视图(如背景 Frame)设置:IgnoreSafeArea="True"(MAUI 8+ 支持)或使用 SafeAreaEffect 手动处理。

跨平台统一入口(推荐封装)

为便于管理,可在共享项目中定义接口,再由各平台实现:

  • 新建 IPlatformFullScreenService 接口,含 EnterImmersiveMode()ExitImmersiveMode()
  • Android 实现调用前述 Window 控制逻辑;iOS 实现调用 UIApplication.SharedApplication.SetStatusBarHidden
  • MauiProgram.cs 中注册服务:builder.Services.AddSingleton()(按平台条件注册);
  • 页面中通过依赖注入调用,实现逻辑与平台解耦。

注意事项与常见问题

  • 手势冲突:Android 启用 ImmersiveSticky 后,从边缘上滑可临时呼出导航栏,但不会自动恢复隐藏——这是预期行为;
  • 键盘弹出:沉浸模式下软键盘仍会顶起内容,需监听键盘事件并手动调整布局(如 ScrollView 滚动到焦点控件);
  • 横竖屏切换:部分设备旋转后状态栏可能意外显示,建议在 OnConfigurationChanged 中重新应用沉浸设置;
  • MAUI 版本差异:.NET 8+ 对 IgnoreSafeArea 和平台服务注册更友好,旧版本需手动处理更多生命周期回调。

基本上就这些。沉浸式不是“一键开关”,而是结合平台特性、布局适配和生命周期控制的组合操作。做好状态同步(比如退出页面时恢复状态栏)和边界测试(折叠屏、刘海屏、iPad),体验才稳。


# android  # windows  # app  # ipad  # usb  # mac  # ai  # ios  # macos  # win  # 常见问题  # 键盘事件  # 封装  # 接口  # 事件  # padding  # ui  # 状态栏  # 全屏  # 顶起  # 仅能  # 这是  # 设为  # 并在  # 可在  # 弹出  # 重写 


相关文章: 如何在景安服务器上快速搭建个人网站?  北京网站制作的公司有哪些,北京白云观官方网站?  如何破解联通资金短缺导致的基站建设难题?  如何快速重置建站主机并恢复默认配置?  北京企业网站设计制作公司,北京铁路集团官方网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何将凡科建站内容保存为本地文件?  简单实现Android文件上传  广德云建站网站建设方案与建站流程优化指南  建站主机CVM配置优化、SEO策略与性能提升指南  建站主机空间推荐 高性价比配置与快速部署方案解析  c# await 一个已经完成的Task会发生什么  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何正确下载安装西数主机建站助手?  存储型VPS适合搭建中小型网站吗?  python的本地网站制作,如何创建本地站点?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  湖北网站制作公司有哪些,湖北清能集团官网?  定制建站方案优化指南:企业官网开发与建站费用解析  ,如何利用word制作宣传手册?  已有域名如何快速搭建专属网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  Swift中循环语句中的转移语句 break 和 continue  如何在阿里云虚拟主机上快速搭建个人网站?  香港服务器租用费用高吗?如何避免常见误区?  建站之星代理如何优化在线客服效率?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  网页设计网站制作软件,microsoft office哪个可以创建网页?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何用花生壳三步快速搭建专属网站?  制作证书网站有哪些,全国城建培训中心证书查询官网?  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何通过VPS搭建网站快速盈利?  建站之星导航菜单设置与功能模块配置全攻略  Android滚轮选择时间控件使用详解  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  太平洋网站制作公司,网络用语太平洋是什么意思?  怎么将XML数据可视化 D3.js加载XML  做企业网站制作流程,企业网站制作基本流程有哪些?  如何快速搭建高效WAP手机网站吸引移动用户?  建站之星如何快速生成多端适配网站?  如何通过远程VPS快速搭建个人网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  家具网站制作软件,家具厂怎么跑业务?  如何快速搭建高效简练网站?  如何快速查询网站的真实建站时间? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。