最推荐方式是使用Microsoft.Maui.Devices.DeviceDisplay类获取屏幕宽高:Width/Height返回物理像素值,随旋转实时变化;结合Density可换算为逻辑单位dp;通过MainDisplayInfoChanged事件监听尺寸变化;安全区域需平台特异性处理。
在 MAUI 中获取屏幕宽度和高度,最推荐、最可靠的方式是使用 Microsoft.Maui.Devices.DeviceDisplay 类。它能返回设备当前的屏幕尺寸(单位:像素)、密度、安全区域等关键信息,且跨平台兼容 iOS、Android、Windows 和 macOS。
用 DeviceDisplay.MainDisplayInfo.Width 和 Height 可拿到主屏幕的**物理像素尺寸**,注意这是未缩放的原始值,受系统缩放(如 Windows 的 125% 缩放)或字体大小设置影响较小:
若需适配不同屏幕密度(比如设计稿按 360dp 宽度基准),可结合 MainDisplayInfo.Density 换算:
MainDisplayInfo.Width / MainDisplayInfo.DensityMainDisplayInfo.Height / MainDisplayInfo.Density当用户旋转设备或窗口大小改变(桌面端),可通过订阅 DeviceDisplay.MainDisplayInfoChanged 事件响应:
DeviceDisplay.MainDisplayInfoChanged += OnDisplayInfoChanged;Width/Height,更新布局或刷新网格列数DeviceDisplay 不直接提供安全区域(Safe Area),但它是布局适配的关键。如需避开刘海/圆角/手势条:
Application.Current.Windows[0].SafeArea 获取 ThicknessPlatform.CurrentActivity?.Window?.DecorView)或社区库辅助
基本上就这些。用好 DeviceDisplay.MainDisplayInfo 能覆盖绝大多数屏幕适配场景,不复杂但容易忽略密度换算和事件监听这两个关键点。