Xamarin中如何检测iOS、安卓平台设备类型(区分手机/平板)
跨平台应用识别手机/平板设备的官方可靠方案
不要依赖自行计算屏幕宽高像素的判断逻辑,这类逻辑在折叠屏、分屏模式、异形屏设备上很容易出现误判,iOS和Android都提供了系统级的设备类型识别API,可直接在现有代码的平台分支中使用:
iOS 端识别逻辑
iOS 系统直接对外暴露了设备习语属性,由系统返回当前设备的类型,不受屏幕缩放、分屏功能影响,识别准确率100%:
if(Device.RuntimePlatform == Device.iOS) { // 需提前引用UIKit命名空间 bool isTablet = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad; if (isTablet) { // 平板设备业务逻辑 } else { // 手机设备业务逻辑 } }
该属性可以准确区分iPhone、iPad、Mac Catalyst 运行场景,不需要额外兼容不同系统版本。
Android 端识别逻辑
Android 系统官方以600dp最小屏幕宽度作为区分手机和平板的标准,系统本身就是依据这个阈值加载对应尺寸的布局资源,直接读取系统配置中的该值即可,不需要自行计算实时宽高:
else if(Device.RuntimePlatform == Device.Android) { // 需提前引用Android.Content.Res命名空间 var smallestWidthDp = Android.App.Application.Context.Resources.Configuration.SmallestScreenWidthDp; bool isTablet = smallestWidthDp >= 600; if (isTablet) { // 平板设备业务逻辑 } else { // 手机设备业务逻辑 } }
注意:这里的600dp阈值是Android官方定义的标准,不是自定义经验值。当折叠屏切换展开/折叠状态、应用开启分屏模式时,系统会自动更新该配置值,返回当前场景下的正确设备类型,比自行取屏幕宽高计算的方案稳定性高很多。
额外注意事项
- 所有基于像素尺寸的判断逻辑都不可靠,不同设备像素密度差异极大,必须用系统提供的与密度无关的单位做判定
- 如果是在共享项目层编写逻辑,可以通过依赖服务的方式调用上述平台专属API
内容的提问来源于stack exchange,提问作者TheHunter Shergill
相关产品推荐
相关产品推荐

