SuperAPI AI 工具集

maui-safe-area

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:指导 .NET MAUI 在 .NET 10+ 中处理安全区与边到边(沉浸式)布局,替代旧有 iOS 专用的 UseSafeArea 与布局级 IgnoreSafeArea。适用于内容被状态栏、刘海、Dynamic Island、Home 指示条遮挡,或需沉浸式布局、键盘避让、从旧 API 迁移、Blazor Hybrid 协调 CSS 安全区等场景。.NET 9 及更早版本无此 API,应继续使用旧属性。

主要能力:SafeAreaEdges 属性配合 SafeAreaRegions 标志枚举(None、SoftInput、Container、Default、All),支持四条边分别设置,SoftInput 与 Container 可组合。XAML 使用类似 Thickness 的逗号分隔语法,如 SafeAreaEdges="Container"、"Container, SoftInput"、"Container, Container, Container, SoftInput";C# 可直接构造 SafeAreaEdges。控件默认值不同:ContentPage 为 None,Layout 为 Container,ScrollView 为 Default,ContentView 和 Border 为 None。

必要用法与注意:.NET 10 中 ContentPage 默认改为 None(.NET 9 Android 实际接近 Container),升级后内容跑到状态栏下需显式设 SafeAreaEdges="Container"。沉浸式内容需页面与布局都设 None。ScrollView 只认 Container 与 None,键盘避让应把 SoftInput 设在包裹它的 Grid/StackLayout 上。Blazor Hybrid 建议只用 CSS env(safe-area-inset-*) 并在 index.html 加 viewport-fit=cover,避免与 XAML 双重内边距。旧 API 仍可编译但已标记过时;WindowSoftInputModeAdjust.Resize 未过时但仅 Android,跨平台键盘避让优先用 SafeAreaEdges="All"。Android 行为随版本与 OEM 设置而异。

限制:仅适用于 net10.0-* 及以上;Windows 无系统栏 insets;ScrollView 忽略 SoftInput;具体平台差异需按目标平台验证。