Xamarin Forms Shell TitleView 不居中图像

Xamarin Forms Shell TitleView does not center image

我有一个应用程序使用 Xamarin.Forms 中的新 Shell。我将以下代码添加到我的一个页面,试图使用 TitleView 区域显示我的应用程序 header 图像居中。 (仅供参考 - 我已尝试将两个对齐选项置于中心位置,但没有任何区别。)

<Shell.TitleView>
    <Image Source="UCIApp.png"
           HorizontalOptions="FillAndExpand"
           VerticalOptions="FillAndExpand" />
</Shell.TitleView>

这样做后我得到的是标题栏中的图像,但位于 space 的中心,不包括左侧的汉堡包按钮,如下所示:

我更喜欢它居中,而不管 space 汉堡菜单看起来像这样:

有什么建议吗?

另外 - 将图像放入 TitleView 会导致它缩小。有什么办法可以避免吗?

我认为这是关于 Shell 标题视图的设计问题,您可以将其提交为 GitHub here .

中的功能请求

What I would prefer is it centered regardless of the space the hamburger menu takes up looking something like this: ... Any suggestions?

标题视图已经在标题视图中居中。但是,它看起来不在整个导航栏的中心。看看下面的代码和效果。

<Shell.TitleView>
    <StackLayout HorizontalOptions="CenterAndExpand"
                 VerticalOptions="CenterAndExpand"
                 BackgroundColor="Accent">
        <Image Source="xamarin_logo.png"
               HorizontalOptions="Center"
               VerticalOptions="Center" />
    </StackLayout>
</Shell.TitleView>

效果:

可以看到Title View的内容,而且图标已经居中在Title View中了。由于已有meun图标,Title View的权重与Navigation Bar不相等。

Putting the image in the TitleView is causing it to be shrunk down

参考上面的效果,可以看到图标的大小适配了Title View的显示,可以看到Title View的大小,所以你的图标不太可能超出显示范围标题视图。

是的,设计失败,没有选项定制。对于这样的问题,我更喜欢 Grid。您可以使用带百分比的列或行。

默认位置。

<Shell.TitleView>
    <Grid>
        <ffimageloadingsvg:SvgCachedImage 
            Source="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg"
            Margin="10"/>
    </Grid>
</Shell.TitleView>

在此示例中,第一列为 4/5 单位,第二列为 1/5 单位(* 符号表示百分比或除法)。

<Shell.TitleView>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="4*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>

        <BoxView BackgroundColor="Yellow"/>
        <BoxView Grid.Column="1" BackgroundColor="LightGoldenrodYellow"/>
    </Grid>
</Shell.TitleView>

然后将图像文本或控件添加到首选布局(图像控件默认列为 0)。

<Shell.TitleView>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="4*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>

        <ffimageloadingsvg:SvgCachedImage 
            Source="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg"
            Margin="10"/>
    </Grid>
</Shell.TitleView>

编辑: 将最小高度添加到网格或图像控件以防止调整内容大小。另外 ffimageloadingsvg 是用于加载 svg 文件的第三方包。