«OnSizeAllocated» не вызывается, когда я вращаю эмулятор Android, чтобы изменить ориентацию на ландшафтный режим или режим Potrait. - PullRequest
1 голос
/ 16 мая 2019

Я хочу изменить макет страницы при изменении ориентации устройства.Но для этого мне сначала нужно получить уведомление, когда когда-либо меняется ориентация.

Я использовал событие «SizeChanged» Пейджа, и оно прекрасно работает, когда я поворачиваю экран в симуляторе ios.Но это не вызывается для эмулятора Android.

Я также пытался использовать метод OnSizeAllocated, он снова не вызывается для эмулятора Android, но отлично работает для симулятора ios.

public LoginPage()    
{
  InitializeComponent();
}

protected override void OnSizeAllocated(double width,double height)
{
  base.OnSizeAllocated(width,height); 
  //
  //
}

Этоэто эмулятор, который я использую: -

enter image description here

OnSizeAllocated () должен вызываться несколько раз.Но он вызывается только один раз при запуске приложения (для эмулятора Android).

Как мне заставить его работать или есть какой-либо другой способ получать уведомления при изменении ориентации эмулятора?

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Событие Forms 'OnSizeAllocated связано с OnConfigurationChanged.

в Android Activity.

Так что, если OnConfigurationChanged не вызывается, это может быть любая из этих трех вещей:

  1. Ваш эмулятор устройства настроен на автоповорот? Отмените быструю настройку и убедитесь, что вращение включено.

enter image description here

  1. Вы удалили ConfigChanges.Orientation из атрибутов своей деятельности.

MainActivity.cs:

[Activity(Label ~~~~~, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
  1. Вы заставляете свое приложение / активность Android ориентироваться на одну ориентацию (через манифест, атрибуты и / или собственный код Android)
0 голосов
/ 20 мая 2019

Я ничего не изменил в коде, и нового обновления xamarin нет, но сегодня, когда я попробовал, оба метода работают просто отлично.

Так что для меня, я думаю, перезапуск Visual studio, проекты по очистке и сборке сделали его работающим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...