我想在设备方向更改时更改页面布局。但是为此,我首先需要在方向改变时得到通知。
我使用了Page的'SizeChanged'事件,当我在ios模拟器中旋转屏幕时,它可以正常工作。但这并不是Android模拟器的要求。
我也尝试过使用OnSizeAllocated方法,但是它对于Android模拟器来说并没有被调用,但是对于ios模拟器却可以正常工作。
public LoginPage()
{
InitializeComponent();
}
protected override void OnSizeAllocated(double width,double height)
{
base.OnSizeAllocated(width,height);
//
//
}
这是我正在使用的模拟器:-
OnSizeAllocated()应该被调用多次。但是在应用启动时它只会被调用一次(适用于android模拟器)。
当模拟器方向改变时,我该如何使其工作或还有其他方法来获得通知?
答案 0 :(得分:2)
Forms的OnSizeAllocated
事件与Android Activity的OnConfigurationChanged
耦合。
因此,如果未调用OnConfigurationChanged
,则可能是以下三件事之一:
ConfigChanges.Orientation
。MainActivity.cs:
[Activity(Label ~~~~~, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
答案 1 :(得分:0)
我没有更改代码中的任何内容,也没有新的xamarin更新,但是今天当我尝试两种方法都可以正常工作时。
所以对我来说,我猜想是重新启动Visual Studio,清理和构建项目才能使其正常工作。