Как центрировать ImageView в Shell.TitleView Xamarin.Forms 4.0? - PullRequest
0 голосов
/ 26 июня 2019

Я использую 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 находится не в центре, пока не нажата кнопка регулировки внизу (которая выполняет вычисления, упомянутые выше). Я надеюсь, что я упустил какой-то стандартный способ добиться этого.

...