检测视图/页面更改

时间:2017-11-22 23:25:34

标签: android xamarin xamarin.forms xamarin.android

我有一个Xamarin Forms项目,在Portrait模式下应该严格,只有2页应该以横向模式显示。目前我正在使用

强制所有页面成为肖像
RequestedOrientation = ScreenOrientation.Portrait;

在MainActivity.cs的开头。在这个活动中,我有一些MessagingCenter订阅方法,它们将RequestedOrientation更改为横向和纵向

        MessagingCenter.Subscribe<Page>(this, "goLandscape", sender =>
        {
            RequestedOrientation = ScreenOrientation.Landscape;
        });

        MessagingCenter.Subscribe<Page>(this, "goPortrait", sender =>
        {
            RequestedOrientation = ScreenOrientation.Portrait;
        });

在应该以横向模式显示的页面的OnAppearing方法中,我发送&#34; goLandscape&#34;消息,并在OnDisappearing中发送&#34; goPortrait&#34;。

当我在具有不同方向的页面之间切换时会出现问题。大多数情况下,布局将被转移&#34;。

示例图片https://imgur.com/a/J2bTx标签和按钮应居中,灰色背景应填充到底部。 我还尝试在轮换发生后使布局失效,但是没有改变任何东西。

我发现MessagingCenter可能是问题的原因,所以我正在寻找一种不同的方法来处理方向。 目前我尝试在自定义渲染器绘制任何内容之前更改旋转,但我无法找到在MainActivity或自定义页面渲染器绘制UI的任何内容之前调用的任何方法。有没有我可以覆盖的方法?

在不破坏布局的情况下,有没有其他方法可以处理强制方向更改?

提前致谢

0 个答案:

没有答案