Ниже приведена моя страница AppShell.xaml:
<?xml version = "1.0" encoding = "UTF-8" ?>
<Shell
x:Class = "MauiAppTest.AppShell"
xmlns = "http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local = "clr-namespace:MauiAppTest"
Title = "MauiAppTest"
FlyoutBehavior = "Disabled"
FlyoutItem.IsVisible = "False">
<Shell.TitleView>
<Grid BackgroundColor = "Red">
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "*" />
<ColumnDefinition Width = "Auto" />
</Grid.ColumnDefinitions>
<Image
Grid.Column = "0"
Margin = "0,0,0,0"
HeightRequest = "50"
HorizontalOptions = "Center"
Source = "app_icon.png"
VerticalOptions = "Center" />
</Grid>
</Shell.TitleView>
<ShellContent ContentTemplate = "{DataTemplate local:MainPage}" Route = "MainPage" />
</Shell>
Ниже показано изображение AppShell во время работы приложения (окрашено красным):
Изображение работающего приложения Shell.TitleView
На изображении слева от TitleView есть небольшое черное пространство. Я не хочу, чтобы это было там, и понятия не имею, почему оно там.
Я пробовал отключить FlyoutItem и FlyoutBehaviour, но безрезультатно. Я не могу найти нигде, что могло бы вызвать появление этого дополнительного пространства слева.
Я попробовал грубое решение этой проблемы — установить отрицательное значение поля логотипа приложения, чтобы правильно центрировать его, но оно будет смещено, когда на других страницах будет отображаться кнопка «Назад».
Я хочу знать, есть ли способ скрыть это дополнительное пространство или правильно центрировать изображение и замаскировать этот раздел, чтобы избежать проблем с выравниванием, когда на страницах отображается кнопка «Назад».
Я ориентируюсь на Android и использую .net 8.
Спасибо за ваш ответ, вы можете удалить его, используя ответ, который я разместил ниже.
Небольшое дополнительное пространство в левой части TitleView
связано с [iOS] Shell/NavigationPage TitleView #20959 и [Spec] Shell/NavigationPage TitleView #5063, и это может быть исправлено в .NET 9 с выпуском последующих версий.
В качестве альтернативного решения вы можете исправить это, добавив приведенный ниже код в файл MauiProgram.cs, если вы ориентируетесь на платформу Android:
Microsoft.Maui.Handlers.ToolbarHandler.Mapper.AppendToMapping("CustomNavigationView", (handler, view) =>
{
#if ANDROID
handler.PlatformView.ContentInsetStartWithNavigation = 0;
handler.PlatformView.SetContentInsetsAbsolute(0, 0);
#endif
});
проверено и работает! спасибо, это сводило меня с ума всю последнюю неделю.
Рад видеть, что это работает, хорошего дня!
Могу ли я узнать, на какую платформу вы ориентируетесь и какую версию .NET вы используете?