Я использую Xamarin.Forms 4.0 с оболочкой с выпадающим меню слева. Я пытаюсь отобразить изображение в центре Shell.TitleView, однако я не знаю, как этого добиться правильно. И результат похож на то, что предлагается на официальной странице, что изображение на самом деле не в центре (но немного справа). Это, вероятно, из-за значка меню гамбургера слева, может быть (?)
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/configuration#display-views-in-the-navigation-bar
Я попытался вычислить ширину иконки меню гамбургера после того, как представление было визуализировано, и компенсировать его по краю изображения, но поскольку событие загрузки страницы отсутствует, в данный момент я могу только жестко запрограммировать задержку в конструктор ContentPage. Но это считается довольно грязным, и возникнет проблема, когда справа будет значок.
public SomeContentPage()
{
InitializeComponent();
Device.StartTimer(new System.TimeSpan(0, 0, 0, 0, 500), () =>
{
var titleViewBound = Shell.GetTitleView(this).Bounds;
DisplayInfo displayInfo = DeviceDisplay.MainDisplayInfo;
double leftButtonWidth = displayInfo.Width / displayInfo.Density - titleViewBound.Width;
TitleImage.Margin = new Thickness(0, 0, leftButtonWidth, 0);
return false;
});
}
Я ожидаю, что будет лучший способ центрировать изображение в TitleView, независимо от того, есть ли значок меню гамбургера или другие значки справа. Заранее спасибо!
--- Добавлен образец для справки ---
Я пометил приложение белым цветом и поместил его на Github для всех. Спасибо!
Образец для справки: https://github.com/ltin071/XFShellFlyoutSample
TitleImage находится не в центре, пока не нажата кнопка регулировки внизу (которая выполняет вычисления, упомянутые выше). Я надеюсь, что я упустил какой-то стандартный способ добиться этого.