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

煙雲
发布: 2025-12-22 12:43:56
原创
303人浏览过
MAUI实现沉浸式全屏需分平台处理:Android可隐藏状态栏和导航栏,iOS仅能隐藏状态栏;需配合布局Padding、SafeArea适配及平台服务封装,注意手势、键盘与横竖屏兼容性。

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

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),仅能隐藏顶部状态栏:

文心大模型
文心大模型

百度飞桨-文心大模型 ERNIE 3.0 文本理解与创作

文心大模型 168
查看详情 文心大模型
  • 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<iplatformfullscreenservice androidfullscreenservice>()</iplatformfullscreenservice>(按平台条件注册);
  • 页面中通过依赖注入调用,实现逻辑与平台解耦。

注意事项与常见问题

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

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

以上就是MAUI怎么实现全屏显示 MAUI沉浸式模式教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号