Xamarin.Forms SetHasNavigationBar causas falsas salto en PushAsync

Estoy agregando una barra de navegación usando

MainPage = new NavigationPage (new Home ());

Entonces en mi página Home.cs no quiero mostrar la barra de navegación, es sólo para las páginas que enlazan desde esta página que quiero mostrar la barra de navegación. Para detener la visualización de la barra de navegación en esta página, Home.cs el siguiente código al inicio de Home.cs

 NavigationPage.SetHasNavigationBar (this, false); 

De aquí cuando se utiliza Navigation.Push.Async para ir a otra página obtengo un "salto" (movimiento?) En la parte inferior de Home.cs Es como añade en la altura de la barra de navegación en la página siguiente.

En iOS causa el salto obvio si se establece el color de fondo en Home.cs a cualquier cosa menos blanco.

En Android parece que sólo causa este "salto" al navegar de nuevo a la página Home.cs

Este es el código que estoy usando para pasar a la siguiente página.

 btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage ()); 

He intentado eliminar todos los padding.margins de las páginas, pero esto no ha ayudado. Como empecé un nuevo proyecto para probar esto no hay nada más para mí cambiar así que no puedo pensar en cualquier otro cambio que resolvería esto.

Gif a continuación: Intentó mostrar el salto en este gif

Nota: Vigile la página Home.cs (Gris).

Trabajo alternativo alrededor

Yo mi situación venía de un SpringBoard sin una barra de navegación. Así que lo que hice al ir a un ContentPage con la barra de navegación era Ocultar antes y Mostrar la barra de navegación después de la PushAsync.

 NavigationPage.SetHasNavigationBar(page, false); await Navigation.PushAsync(page); NavigationPage.SetHasNavigationBar(page, true); 

No estoy seguro de si esta es una solución ordenada, pero en las listas se deshace del efecto de salto. Como efecto secundario, hace que la barra de navegación se deslice desde la parte superior que se parece más a una animación bien pensada de la interfaz de usuario y luego salta contenido.

Después de un montón de mirar alrededor he encontrado esto para ser un error en Xmarin.Forms. No hay noticias sobre cuando habrá una solución o cualquier trabajo alrededor.

Por favor, mantenga un ojo en el informe de errores aquí:

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


Trabajo alrededor (ish?)

Como una solución, he detenido la animación de suceder en absoluto. Agregar false como segundo parámetro desactivará la animación. Esto no se ve muy bien, pero tal vez mejor que ver el pequeño "salto" problema.

 btn.Clicked += async (sender, e) => await Navigation.PushAsync (new TestPage (), false); 

Como una solución provisional, puede utilizar PushModalAsync, si esto se suma a su aplicación.

  • La aplicación reanuda los resultados en bloqueo con FormsAppCompatActivity
  • Xamarin - parpadea cuando cambio la fuente de la imagen
  • Xamarin Forms Android Keyboard mueve toda la página hacia arriba
  • Hacer desaparecer una barra de navegación en Xamarin.Forms
  • Quitar icono de la barra de acción xamarin
  • Xamarin.Forms popup "Nueva Versión Disponible"
  • Obtenga el contexto de Android en el proyecto PCL
  • Xamarin forma la posición de los elementos de la barra de herramientas para Android
  • SetPage (Xamarin.Forms.Page) 'es un error obsoleto - Android
  • Proguard en gris en ciertas configuraciones de construcción
  • Xamarin - Visual Studio está atascado en zipalign.exe
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.