Xamarin.Forms SetHasNavigationBar false导致PushAsync跳转

Rud*_*ddy 9 c# android ios xamarin xamarin.forms

我正在使用添加导航栏

MainPage = new NavigationPage (new Home ());

然后在我的Home.cs页面上我不想显示导航栏,它只适用于从此页面链接的页面我要显示导航栏.要阻止导航栏在此页面上显示,我在开头使用以下代码Home.cs.

NavigationPage.SetHasNavigationBar (this, false);
Run Code Online (Sandbox Code Playgroud)

从这里开始使用Navigation.Push.Async去另一个页面时,我会在底部得到一个"跳跃"(运动?)Home.cs.它就像它增加了下一页导航栏的高度.

在iOS上,如果将背景颜色设置Home.cs为除白色以外的任何颜色,则会导致明显的跳转.

在Android上,它似乎只会在导航回Home.cs页面时导致"跳转" .

这是我用来推送到下一页的代码.

btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage ());
Run Code Online (Sandbox Code Playgroud)

我试图从页面中删除所有padding.margins,但这没有帮助.当我开始一个新项目来测试这个时,我没有任何其他东西可以改变,所以我想不出任何可以解决这个问题的其他变化.

下面的Gif: 试图显示这个GIF的跳跃

注意: 注意(灰色)页面.Home.cs

Jør*_*gen 6

替代工作

我的情况我来自没有导航栏的SpringBoard.所以我在使用导航栏访问ContentPage时所做的就是在之前隐藏并在PushAsync之后显示导航栏.

NavigationPage.SetHasNavigationBar(page, false);

await Navigation.PushAsync(page);

NavigationPage.SetHasNavigationBar(page, true);
Run Code Online (Sandbox Code Playgroud)

不确定这是否是一个简洁的解决方案,但至少它摆脱了跳跃效果.作为副作用,它使导航栏从顶部滑入,看起来更像是一个精心设计的UI动画,然后跳转内容.


Rud*_*ddy 3

经过大量查看后,我发现这是 Xmarin.Forms 中的一个错误。没有关于何时修复或解决任何问题的消息。

请留意此处的错误报告:

https://bugzilla.xamarin.com/show_bug.cgi?id=32830


解决办法(是吗?)

作为一种解决方法,我已经完全停止了动画的发生。添加false第二个参数将禁用动画。这看起来不太好,但也许比看到小“跳跃”问题更好。

btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage (), false);
Run Code Online (Sandbox Code Playgroud)