SuperAPI AI 工具集

maui-safe-area

通用与其它

查看项目

更新于 10-16 05:05

技能介绍

用途:为 .NET MAUI(.NET 10+)应用提供安全区域(safe area)与边到边(edge-to-edge)布局的指导,帮助处理刘海屏、状态栏、导航栏和软键盘遮挡问题。

主要能力:覆盖 SafeAreaEdges 属性、SafeAreaRegions 枚举、逐边控制(如 Container, Container, Container, SoftInput)以及键盘避让;给出 .NET 9 到 .NET 10 的破坏性变更说明,例如 ContentPage 默认值改为 None(边到边),Android 内容若跑到状态栏下需显式设置 SafeAreaEdges="Container";WindowSoftInputModeAdjust.Resize 迁移时可能需要在 ContentPage 上设置 SafeAreaEdges="All"。

常见陷阱:布局默认是 Container 而非 None,真正边到边需在页面和布局上都设 None;ScrollView 上的 SoftInput 无效,应把 SoftInput 设在包裹的 Grid/StackLayout 上;Default 与 None 含义不同,在 ScrollView 上差异明显;Blazor Hybrid 中 XAML 安全区域与 CSS env() 同时使用会造成双重内边距,建议二选一(Blazor 推荐 CSS);iOS Shell/NavigationPage 边到边需透明背景并隐藏分隔线。

使用方式:按场景选择取值——表单与关键输入用 All;图片/视频/游戏用 None(页面和布局都设);带固定页眉页脚的可滚动内容用 Container;带底部输入栏的聊天用逐边 Container, Container, Container, SoftInput;Blazor Hybrid 页面设 None 并用 CSS env(),同时在 meta viewport 加 viewport-fit=cover。迁移对照:ios:Page.UseSafeArea="True" 改为 SafeAreaEdges="Container";IgnoreSafeArea="True" 改为 SafeAreaEdges="None";WindowSoftInputModeAdjust.Resize 改为 ContentPage 上 SafeAreaEdges="All"。旧属性仍可用但已过时。

最佳实践与限制:SafeAreaEdges 可与 Padding 叠加使用,前者处理内边距、后者加视觉间距;混合布局可用逐控件设置;需在刘海设备、横屏平板和不同屏幕尺寸上测试。资料未提供具体安装命令、收费或平台支持范围。