我的某些应用程序内容页面上都有TitleView,并且我希望包含所有文本的StackLayout填充可用空间。但是,将其HorizontalOptions设置为Fill或FillAndExpand并不像在ContentPage中正常进行那样工作,而是StackLayout仅与我在其中拥有的Label一样宽。
我的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”标签位于“后退”箭头的旁边,然后将其他所有内容放在导航栏的另一端-如您所见,我已经HorizontalOptions="Start"
为PageTitle和HorizontalOptions="End"
其他所有内容设置了。
期望的结果是这样(在Paint中编辑):
我也尝试过在C#中获取Page的宽度,并为PageTitle标签设置Margin,如下所示:
double width = App.Current.MainPage.Width / 4;
PageTitle.Margin = new Thickness (0,0,width,0);
但是,由于我的应用程序被设计为可用于纵向或横向的任何设备,因此这会导致文本显示错误,导致显示内容太小。
除非绝对必要,否则请不要提供有关自定义工具的建议。
您可以通过HorizontalOptions
将第一个Label的更改为FillAndExpand
或来解决此问题。StartAndExpand
<Label Text="PageTitle"
TextColor="White"
FontSize="20"
FontAttributes="Bold"
HorizontalOptions="StartAndExpand"
x:Name="PageTitle"/>
这将“强制”其余项目移至末尾。
希望这可以帮助。-
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句