如何解决Xamarin.Forms:显示ToolbarItems时,如何在TitleView中居中放置图像?
我正在使用包含 4个标签的 Xamarin.Forms.Shell应用。我想在所有这些页面上显示一个常见 \documentclass{article}
\usepackage[utf8]{inputenc}
%\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{xcolor}
%\usepackage{url}
\usepackage[margin=1.0in]{geometry}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\usepackage{comment}
\usepackage{ifthen}
\usepackage{placeins}
\usepackage{authblk}
\usepackage{afterpage}
\usepackage{amsthm}
\usepackage{soul}
\usepackage[english]{babel}
%\usepackage{xcolor}
\graphicspath{ {./images/} }
\newtheorem*{remark}{\textbf{Remark}}
\usepackage{subcaption}
\usepackage{textgreek}
\usepackage[font={it}]{caption}
\usepackage{titlesec}
\usepackage{titling}
\usepackage{pgffor}
\usepackage{hyperref}
\date{November 2020}
\begin{document}
\section{Introduction}
In the IMAGES folder i loaded images from epoch 1218 batch 200 to epoch 1220 batch 0
\begingroup
\raggedright%
\foreach \epoche in {998,...,1000}{%
\foreach \batch in {0,100,400}{%
\foreach \x in {1,10}{%
\includegraphics[width=20mm]{IMAGES/fake_image_MPI_rank_0_Epoch_\epoche _Batch_\batch_N_image_\x }\hspace{0pt}%
}}}
\captionof{table}{Bla Bla bla}
\label{somekey}
\endgroup
\clearpage
\begingroup
\raggedright%
\foreach \epoche in {1219,1219}{%
\foreach \batch in {0,10}{%
\fBox{\includegraphics[width=20mm]{IMAGES/fake_image_MPI_rank_0_Epoch_\epoche _Batch_\batch_N_image_\x }}\hspace{0pt}%
}}}
\captionof{table}{Bla Bla bla}
\label{somekeyy}
\endgroup
\end{document}
,其中包含一个居中的SVG徽标。
为此,我可以这样使用Title
:
TitleView
这可行,徽标在<Shell.TitleView>
<ffimageloadingsvg:SvgCachedImage Source="resource://ShellAppSample.Resources.logoTitle.svg"
DownsampleHeight="6"
HeightRequest="45"/>
</Shell.TitleView>
中居中。但是,如果页面包含NavigationBar
,则徽标将不再居中。
例如,在页面上我有一个toolbaritems
,如下所示:
ToolBarItem
是否有另一种方法可以通过使用<ContentPage.toolbaritems>
<ToolbarItem Text="Refresh"
Order="Primary"
Priority="0"
Command="{Binding RefreshCommand}"
CommandParameter="{x:Reference webView}">
<ToolbarItem.IconImageSource>
<FontimageSource Glyph="{StaticResource FalIconRefresh}"
FontFamily="FontAwesomeLight"
Size="Medium"/>
</ToolbarItem.IconImageSource>
</ToolbarItem>
</ContentPage.toolbaritems>
或计算Customrenderer
的大小来显示来自SVG的居中图像作为标题?
我发现1年前已经发布了similar question,但没有任何解决方案...
我已经尝试过像这样在toolbaritems
中重绘ToolbarItem
:
TitleView
在iOS上是正确的,但是我可以看到:
- 徽标不完全居中,就像在不包含任何
<Shell.TitleView> <Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="Transparent"> <ffimageloadingsvg:SvgCachedImage Source="resource://ShellAppSample.Resources.blacklogoTitle.svg" DownsampleHeight="6" HorizontalOptions="CenterandExpand" HeightRequest="45" BackgroundColor="Transparent"/> <Image HorizontalOptions="End" VerticalOptions="CenterandExpand" BackgroundColor="Transparent"> <Image.source> <FontimageSource Glyph="{StaticResource FalIconRefresh}" FontFamily="FontAwesomeLight" Size="Medium"/> </Image.source> <Image.GestureRecognizers> <TapGestureRecognizer Command="{Binding RefreshCommand}" CommandParameter="{x:Reference webView}"/> </Image.GestureRecognizers> </Image> </Grid> </Shell.TitleView>
的页面上一样,因为当我在页面之间切换时,间隙很小 - 图标的位置未定位,就像我使用
ToolBarItem
时一样
在Android上,结果不正确:徽标的高度不同,并且图标不在ToolBarItem
之外。
解决方法
最后,我已经这样管理TitleView
:
对于Image
:
<Shell.TitleView >
<Image Source="resource://ShellAppSample.Resources.logo.jpg"
VerticalOptions="CenterAndExpand" HorizontalOptions="Center"
Margin="{OnPlatform Android='0,16,0',Default=0}"/>
</Shell.TitleView>
对于Label
:
<Shell.TitleView>
<Label Text="{Binding Title}"
VerticalOptions="CenterAndExpand" HorizontalOptions="Center"
Margin="{OnPlatform Android='0,Default=0}"/>
</Shell.TitleView>
对于Label
,其大小为ToolBarItem
的一个“中”:
<Shell.TitleView>
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Title}"
Grid.Column="1"
VerticalOptions="CenterAndExpand" HorizontalOptions="Center"
Margin="{OnPlatform Android='0,Default=0}"/>
</Grid>
</Shell.TitleView>
<ContentPage.ToolbarItems>
<ToolbarItem Text="Refresh"
Order="Primary"
Priority="1"
Command="{Binding RefreshCommand}">
<ToolbarItem.IconImageSource>
<FontImageSource Glyph="{StaticResource FalIconRefresh}"
FontFamily="FontAwesomeLight"
Size="Medium"/>
</ToolbarItem.IconImageSource>
</ToolbarItem>
</ContentPage.ToolbarItems>
我已经通过DebugRainbows软件包检查了对齐方式,在iOS / Android上,在小型/大型设备上,它看起来都不错。
这并不完美,如果我添加其他ToolBarItem
,则需要更新规则,但是它的工作原理是这样的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。