c# - Xamarin.Forms SetHasNavigationBar false 导致在 PushAsync 上跳转

标签 c# android ios xamarin xamarin.forms

我正在添加一个导航栏使用

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 但这没有帮助。当我开始一个新项目来测试它时,我没有任何其他可以改变的东西,所以我想不出任何其他可以解决这个问题的改变。

动图如下: Tried to show the jump in this gif

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

最佳答案

替代方案

在我的情况下,我来自没有导航栏的 SpringBoard。因此,当转到带有导航栏的 ContentPage 时,我所做的是在 PushAsync 之前隐藏并在 PushAsync 之后显示导航栏。

NavigationPage.SetHasNavigationBar(page, false);

await Navigation.PushAsync(page);

NavigationPage.SetHasNavigationBar(page, true);

不确定这是否是一个巧妙的解决方案,但至少它摆脱了跳跃效果。作为副作用,它使导航栏从顶部滑入,看起来更像是经过深思熟虑的 UI 动画然后跳转内容。

关于c# - Xamarin.Forms SetHasNavigationBar false 导致在 PushAsync 上跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983548/

相关文章:

c# - 如何在 EF 代码优先方法中调用存储过程?

c# - 将 Roslyn 编译的程序集加载到沙箱 ​​AppDomain

C#:将字典与英语以外的语言一起使用时出现问题

java - 两个字符串的比较在android中不起作用

android - Samsung Pop 5570 在 Ubuntu 10.10 中无法连接。处于开发模式

ios - 构建成功后将文本文件安装/导入到物理设备时 Xcode 崩溃 (RangeException)

ios - 我如何在 UIImageView 中使用一串图像名称?

c# - 如何使用 System.IO.Directory.GetFiles 递归枚举文件+文件夹

ios - 在 authorize.net iphone SDK 上使用测试帐户注册设备?

java - 在适配器中获取 Activity - Java 中的 Android studio