【发布时间】: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。
标签: c# xaml xamarin xamarin.forms