Xamarin.android Xamarin Android,Xamarin表单方向更改

Xamarin.android Xamarin Android,Xamarin表单方向更改,xamarin.android,xamarin.forms,Xamarin.android,Xamarin.forms,使用Xamarin表单UI框架的Xamarin Android应用程序。 我检测屏幕方向,只允许特定页面的纵向和横向,但只允许所有其他页面的纵向 我试图调用RequestOrientation,但这会强制方向保持不变,并且不会再次发出方向更改通知。在你的App.Xaml.cs中有一个静态属性 public static bool IsPortraitOnly { get; set; } 在所有页面中将其设置为false,在您希望仅为纵向的页面中将其设置为true 在android项目中的mai

使用Xamarin表单UI框架的Xamarin Android应用程序。 我检测屏幕方向,只允许特定页面的纵向和横向,但只允许所有其他页面的纵向


我试图调用RequestOrientation,但这会强制方向保持不变,并且不会再次发出方向更改通知。

在你的App.Xaml.cs中有一个静态属性

public static bool IsPortraitOnly { get; set; }
在所有页面中将其设置为
false
,在您希望仅为纵向的页面中将其设置为
true

在android项目中的
main活动
中,覆盖方法
OnConfigurationChanged

    public override void OnConfigurationChanged(Configuration newConfig)
    {
        //using to prevent the OnCreate from firing when rotating or screen size is changing
        if (App.IsPortraitOnly)
        {
            RequestedOrientation = ScreenOrientation.Portrait;
            newConfig.Orientation = Orientation.Portrait;
        }
        base.OnConfigurationChanged(newConfig);
    } 
以下是android中可用的方向值:

public enum Orientation
{
    Landscape = 2,
    Portrait = 1,
    Square = 3,
    Undefined = 0
}

要确定您是处于纵向模式还是横向模式非常容易:

 static bool IsPortrait(Page p) { return p.Width < p.Height; }

如果在代码端编写代码,则会保持纵向模式。

在Android解决方案属性中是否允许纵向以外的其他方向?
 SizeChanged += (sender, e) => Content = IsPortrait(this) ? portraitView : landscapeView;
RequestedOrientation = ScreenOrientation.Portrait;