Xamarin forms Center NavigationPage title

Sep 30 2020

У меня проблема. Я использовал Navigation.PushAsync (), поэтому теперь на моей второй странице у меня есть стрелка назад в NavigationBar. Теперь я хочу добавить заголовок в середине NavigationBar, но он центрируется не точно по центру, а ближе к правому краю из-за кнопки «Назад».

Я уже пытался установить его в AbsoluteLayout вот так:

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

Но результат тот же :(

Как я могу это исправить?

Ответы

ShubhamTyagi Sep 30 2020 at 20:06

Убрать кнопку возврата

<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">

Добавьте собственное изображение и используйте TapGesture (или вы можете использовать FontAwesome или что-то в этом роде)

<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>

При нажатии на событие открывается страница

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