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

MAUI 实现全屏显示(即“沉浸式模式”)主要通过平台特定代码控制状态栏和导航栏的可见性,Android 和 iOS 的实现方式不同,Windows/macOS 不支持传统意义上的沉浸式全屏。核心思路是:隐藏系统 UI(状态栏、导航栏),让应用内容铺满整个屏幕,同时避免内容被系统栏遮挡。
Android:隐藏状态栏 + 导航栏(真正沉浸)
在 MAUI 中需通过 Android 平台专属代码 设置 Window 的 DecorView 系统 UI 标志:
- 在
Platforms/Android/MainActivity.cs的OnCreate方法中(确保在 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",并确保容器(如Grid或ScrollView)不自动预留系统栏空间; - 若需动态切换沉浸模式(如点击按钮进入/退出),可封装上述逻辑为方法,并在需要时调用。
iOS:隐藏状态栏(有限沉浸)
iOS 不允许隐藏底部安全区域(Home Indicator),仅能隐藏顶部状态栏:
标签: android windows app ipad usb mac ai ios macos win 常见问题 键盘事件
还木有评论哦,快来抢沙发吧~