Я пытаюсь создать два разных макета для портретного и ландшафтного режима в Xamarin для моего приложения для Android.
Я создал папку макета для портретного режима и макет-страну для ландшафта. Когда я открываю определенную страницу, загружается правильный макет в зависимости от ориентации устройства. Однако, когда я меняю ориентацию, когда страница уже открыта, макет не меняется, а только вращается. Я попытался переопределить OnConfigurationChanged
в mainActivity
, но я не уверен, как вызвать и загрузить макет только для нужной страницы.
public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
{
base.OnConfigurationChanged(newConfig);
if (newConfig.Orientation == Android.Content.Res.Orientation.Portrait)
{
LayoutInflater li = (LayoutInflater) this.GetSystemService(Context.LayoutInflaterService);
SetContentView(Resource.Layout.myLayout);
}
else if (newConfig.Orientation == Android.Content.Res.Orientation.Landscape)
{
SetContentView(Resource.Layout.myLayout);
}
}
Этот код загружает правильный макет при изменении ориентации, ноон вызывается каждый раз, когда изменяется ориентация, и происходит за пределами желаемой страницы, с которой связан этот макет.