如何通过Avalonia实现移动应用(以Android为起点)强制横屏运行?
强制Avalonia Android应用仅横屏运行的实现方法
方法一:修改AndroidManifest.xml(推荐)
这是最直接的系统级配置方式,无需额外编写业务代码:
- 找到Avalonia解决方案里的Android项目,打开
Properties/AndroidManifest.xml文件 - 在启动页对应的
<activity>标签内,添加android:screenOrientation="landscape"属性 - 配置后的示例代码:
<activity android:name="crc643f46942d9dd1fff5.MainActivity" android:screenOrientation="landscape" android:launchMode="singleTop" android:configChanges="orientation|keyboardHidden|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - 该配置会让Android系统直接锁定Activity的横屏状态,不受设备自动旋转设置影响。
方法二:代码层面强制设置(双重保障)
如果需要在运行时确保不会切换回竖屏,可在Avalonia主窗口中添加逻辑:
- 在MainWindow的
OnInitialized方法中,调用Android原生API强制设置屏幕方向 - 示例C#代码:
protected override void OnInitialized() { base.OnInitialized(); if (OperatingSystem.IsAndroid()) { var currentActivity = Android.App.Application.Context as Android.App.Activity; currentActivity?.RequestedOrientation = Android.Content.PM.ScreenOrientation.Landscape; } } - 这一步可作为Manifest配置的补充,避免特殊场景下的方向切换。
验证步骤
- 编译Android项目并部署到实体设备或模拟器
- 手动旋转设备,确认应用始终保持横屏显示
- 即使设备开启了系统级旋转锁定,也不会影响应用的横屏设置
内容的提问来源于stack exchange,提问作者cboittin
相关产品推荐
相关产品推荐

