You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI在Android模拟器切换方向后仍返回初始屏幕方向

问题解决:Android模拟器中屏幕方向切换后DeviceDisplay方向不更新

可能的原因及解决步骤

1. 检查Android项目的屏幕方向配置

如果应用被固定为某一方向,即便模拟器切换方向,应用也不会响应变化。需要确保配置支持动态旋转:

  • 修改AndroidManifest.xml:找到<activity>标签,设置android:screenOrientation为sensor(支持自动感应方向):
    <activity android:name=".MainActivity" android:screenOrientation="sensor">
    
  • 或修改MainActivity.cs:在Activity特性中添加ConfigurationChanges,避免方向变化时重启Activity,确保应用能监听方向更新:
    [Activity(
        Label = "YourAppName",
        MainLauncher = true,
        ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)]
    public class MainActivity : MauiAppCompatActivity
    {
        // ...
    }
    

2. 订阅DeviceDisplay方向变化事件

DeviceDisplay.Current.MainDisplayInfo不会自动实时刷新,需要主动订阅事件获取最新方向:

private DisplayOrientation _currentOrientation;

public YourPage()
{
    InitializeComponent();
    // 初始化当前方向
    _currentOrientation = DeviceDisplay.Current.MainDisplayInfo.Orientation;
    // 订阅方向变化事件
    DeviceDisplay.Current.OrientationChanged += OnOrientationChanged;
}

private void OnOrientationChanged(object sender, DisplayOrientationChangedEventArgs e)
{
    _currentOrientation = e.Orientation;
}

private void OnButtonClicked(object sender, EventArgs e)
{
    Shell.Current.DisplayAlert("Orientation", _currentOrientation.ToString(), "OK");
}

protected override void OnDisappearing()
{
    base.OnDisappearing();
    // 取消订阅避免内存泄漏
    DeviceDisplay.Current.OrientationChanged -= OnOrientationChanged;
}

3. 主动获取最新显示信息(可选)

如果不想订阅事件,可在点击按钮时主动拉取最新的MainDisplayInfo,避免使用缓存值:

private void OnButtonClicked(object sender, EventArgs e)
{
    var latestInfo = DeviceDisplay.Current.MainDisplayInfo;
    Shell.Current.DisplayAlert("Orientation", latestInfo.Orientation.ToString(), "OK");
}

4. 验证模拟器设置

确认模拟器的方向锁定已关闭(可在模拟器快捷设置中操作),且系统层面确实完成了方向切换(模拟器界面已旋转)。


内容的提问来源于stack exchange,提问作者Osman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:37:35