Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在水平堆叠布局中居中放置文本?_C#_Android_Ios_Xaml_Xamarin - Fatal编程技术网

C# 如何在水平堆叠布局中居中放置文本?

C# 如何在水平堆叠布局中居中放置文本?,c#,android,ios,xaml,xamarin,C#,Android,Ios,Xaml,Xamarin,我有一个StackLayout,用于在XAML中创建导航栏。此水平堆叠布局包含按钮和标签。问题是,文本不完全是中心的,我似乎不能完美地在中间。有人能帮我把这个文本放在这个布局的中心吗?顺便说一句,我在用Xamarin <!-- Nav Bar--> <StackLayout Orientation="Horizontal" HeightRequest="45" BackgroundColor="{StaticResource Teal}"> <StackLayo

我有一个StackLayout,用于在XAML中创建导航栏。此水平堆叠布局包含按钮和标签。问题是,文本不完全是中心的,我似乎不能完美地在中间。有人能帮我把这个文本放在这个布局的中心吗?顺便说一句,我在用Xamarin

<!-- Nav Bar-->
<StackLayout Orientation="Horizontal" HeightRequest="45" BackgroundColor="{StaticResource Teal}">
  <StackLayout.Padding>
    <OnPlatform x:TypeArguments="Thickness"
                iOS="10,0,0,0"
                Android="0,0,0,0"
                WinPhone="0,0,0,0" />
  </StackLayout.Padding>
  <Button x:Name="btnBack" HorizontalOptions="Start" TextColor="White" BackgroundColor="Transparent"
          Command="{Binding BackCommand}" IsVisible="{Binding CanGoBack}" />
  <Label HorizontalOptions="CenterAndExpand" VerticalOptions="Center" TextColor="White" FontSize="24" Text="{Binding TitleBarText}" LineBreakMode="TailTruncation" />
</StackLayout>


如您所见,应用程序标题未居中…

当您希望将视图放置在特定位置时,StackLayout并不理想。如果您有许多视图,并且希望它们都以合理的方式显示,这是很好的

当您想要像素完美的东西时,有两种很棒的布局:

  • 绝对布局
  • 相对论
对于您的具体问题,我想说使用绝对布局,因为它非常容易使标签居中。对于这个解决方案,我将导航栏的StackLayout更改为AbsoluteLayout,并在代码隐藏中添加了布局参数

XAML:

<AbsoluteLayout x:Name="NavBarLayout" HeightRequest="45" BackgroundColor="Aqua">
     <Button x:Name="btnBack" TextColor="White" FontSize="40" BackgroundColor="Transparent" Text="&lt;" />
     <Label x:Name="labelTitle" TextColor="White" FontSize="24" Text="Hello World!" YAlign="Center" XAlign="Center" LineBreakMode="TailTruncation" />
</AbsoluteLayout>

我知道这是一个非常古老的帖子,但对于仍有类似问题的人,我使用以下方法解决了它:

 HorizontalOptions="Center"
在XAML中的
StackLayout
定义上。我使用的完整定义如下:

<StackLayout Spacing="5" Orientation="Horizontal" x:Name="ButtonLayout" HorizontalOptions="Center">


标签位于剩余空间的中心(减去按钮后)。这就是StackLayout的工作原理。使用不同类型的布局可能更容易实现这一点。我认为绝对布局或相对布局在这种情况下会更好。如果你愿意的话,我会用一个简单的答案来完成这个任务。嘿,谢谢!我真的被困在这个问题上,所以这将是一个非常大的帮助。这绝对是我一直在寻找的解决方案类型。非常感谢。
<StackLayout Spacing="5" Orientation="Horizontal" x:Name="ButtonLayout" HorizontalOptions="Center">