我正在使用
添加导航栏 MainPage = new NavigationPage (new Home ());
然后在我的Home.cs
页面上,我不想显示导航栏,它只适用于从此页面链接的页面,我想显示导航栏。要阻止导航栏在此页面上显示,我在Home.cs
的开头使用以下代码。
NavigationPage.SetHasNavigationBar (this, false);
从这里使用Navigation.Push.Async
转到另一个页面时,我会在Home.cs
的底部得到一个“跳跃”(移动?)。它就像在下一页上添加导航栏的高度一样。
在iOS上,如果将Home.cs
上的背景颜色设置为白色以外的任何颜色,则会导致明显的跳转。
在Android上,当导航回Home.cs
页时,似乎只会导致“跳转”。
这是我用来推送到下一页的代码。
btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage ());
我试图从页面中删除所有padding.margins,但这没有帮助。当我开始一个新项目来测试这个时,我没有任何其他东西可以改变,所以我想不出任何可以解决这个问题的其他变化。
以下Gif: Tried to show the jump in this gif
注意: 密切关注Home.cs
(灰色)页面。
答案 0 :(得分:6)
替代工作
我的情况我来自没有导航栏的SpringBoard。所以我在使用导航栏访问ContentPage时所做的就是先隐藏并在PushAsync之后显示导航栏。
NavigationPage.SetHasNavigationBar(page, false);
await Navigation.PushAsync(page);
NavigationPage.SetHasNavigationBar(page, true);
不确定这是否是一个简洁的解决方案,但至少它摆脱了跳跃效应。作为副作用,它使导航栏从顶部滑入,看起来更像一个精心设计的UI动画,然后跳转内容。
答案 1 :(得分:3)
请关注错误报告:
https://bugzilla.xamarin.com/show_bug.cgi?id=32830
作为一种解决方法,我已经停止了动画的发生。添加false
作为第二个参数将禁用动画。这看起来不太好,但可能会比看到一点“跳跃”问题更好。
btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage (), false);
答案 2 :(得分:0)
作为临时解决方法,您可以使用PushModalAsync,如果这将适用于您的应用。