Xamarin forma Center NavigationPage title

Sep 30 2020

Eu tenho um problema. Eu usei Navigation.PushAsync (), então agora na minha segunda página eu tenho uma seta para trás na NavigationBar. Agora eu quero adicionar um titleview também, no meio da NavigationBar, mas ele não fica centralizado exatamente no meio, mas mais à direita, por causa do botão Voltar.

Já tentei configurá-lo em um AbsoluteLayout assim:

<NavigationPage.TitleView>
    <AbsoluteLayout>
        <Label Text="MyTitle" FontSize="20" AbsoluteLayout.LayoutBounds="0.5, 0.5" AbsoluteLayout.LayoutFlags="PositionProportional" />
    </AbsoluteLayout>
</NavigationPage.TitleView>

Mas ainda assim o mesmo resultado :(

Como posso consertar isso?

Respostas

ShubhamTyagi Sep 30 2020 at 20:06

Remova o botão Voltar

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             NavigationPage.HasBackButton="False">

Adicione uma imagem personalizada e use TapGesture (ou você pode usar FontAwesome ou algo assim)

<AbsoluteLayout>
            <Image AbsoluteLayout.LayoutBounds="0, 0.5" AbsoluteLayout.LayoutFlags="PositionProportional" WidthRequest="20" HeightRequest="20"
                   Source="arrow16">
                <Image.GestureRecognizers>
                    <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
                </Image.GestureRecognizers>
            </Image>
            <Label Text="MyTitle" FontSize="20" AbsoluteLayout.LayoutBounds="0.5, 0.5" AbsoluteLayout.LayoutFlags="PositionProportional" />
</AbsoluteLayout>

Evento On Tap abrir a página

private async void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
   await Navigation.PopAsync();
}