Xamarin - NavigationPage.TitleView 内的 StackLayout 不会使用所有空间?
Posted
技术标签:
【中文标题】Xamarin - NavigationPage.TitleView 内的 StackLayout 不会使用所有空间?【英文标题】:Xamarin - StackLayout inside NavigationPage.TitleView won't use all space? 【发布时间】:2020-02-15 01:43:31 【问题描述】:我的一些应用程序的内容页面上有一个 TitleView,我希望包含所有文本的 StackLayout 来填充可用空间。但是,将其 HorizontalOptions 设置为 Fill 或 FillAndExpand 并不能像通常在 ContentPage 中那样工作,而是 StackLayout 仅与我在其中的标签一样宽。
我的 XAML 代码:
<NavigationPage.TitleView>
<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" x:Name="TitleBarLayout">
<Label Text="PageTitle"
TextColor="White"
FontSize="20"
FontAttributes="Bold"
HorizontalOptions="Start"
x:Name="PageTitle"/>
<Label Text="Text1:"
FontSize="20"
TextColor="LightGray"
HorizontalOptions="End"/>
<Label x:Name="Label1"
FontSize="20"
TextColor="Black"
HorizontalOptions="End"/>
<Label Text="Text2:"
FontSize="20"
TextColor="LightGray"
HorizontalOptions="End"/>
<Label x:Name="Label2"
FontSize="20"
TextColor="Black"
HorizontalOptions="End"/>
<Label Text="Text3:"
FontSize="20"
TextColor="LightGray"
HorizontalOptions="End"/>
<Label x:Name="Label3"
FontSize="20"
TextColor="Black"
HorizontalOptions="End"/>
</StackLayout>
</NavigationPage.TitleView>
所以理想情况下,我希望“PageTitle”标签紧挨着后退箭头,然后将其他所有内容放在导航栏的另一端 - 如您所见,我为 PageTitle 设置了 HorizontalOptions="Start"
,并且HorizontalOptions="End"
其他一切。
这段代码的结果是这样的:
想要的结果是这样的(在 Paint 中编辑):
我也尝试在 C# 中获取页面的宽度并为 PageTitle 标签设置边距,如下所示:
double width = App.Current.MainPage.Width / 4;
PageTitle.Margin = new Thickness (0,0,width,0);
但是因为我的应用程序设计用于任何纵向或横向设备,这会导致在太小的显示器上出现文本环绕错误。
除非绝对必要,否则请不要推荐自定义工具。
【问题讨论】:
将标签的所有水平选项设为 StartAndExpand 或 EndAndExpand 而不是 Start 和 End。 【参考方案1】:您可以通过将第一个标签的HorizontalOptions
更改为FillAndExpand
或StartAndExpand
来解决此问题
<Label Text="PageTitle"
TextColor="White"
FontSize="20"
FontAttributes="Bold"
HorizontalOptions="StartAndExpand"
x:Name="PageTitle"/>
这将“强制”其余项目移动到尽头。
希望这会有所帮助。-
【讨论】:
以上是关于Xamarin - NavigationPage.TitleView 内的 StackLayout 不会使用所有空间?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin - NavigationPage.TitleView 内的 StackLayout 不会使用所有空间?
Xamarin.Forms - Android 全球不支持 PushAsync,请使用 NavigationPage
Xamarin QLPreviewController + NavigationPage 在 iOS 10 上损坏
为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?
Xamarin Forms/Prism 8 - 带有 NavigationPage 导航的 TabbedPage 无法正常工作