ste*_*eaw 3 c# xaml android ios xamarin
我有这个StackLayout,我曾经在XAML中创建一个导航栏.此Horizontal StackLayout包含一个按钮和标签.问题是文本没有完全居中,我似乎无法在中间完美地完成它.有人可以帮我把这个文本集中在这个StackLayout中吗?顺便说一下,我正在使用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>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,应用标题不在中心...
小智 7
当您想要将View放在特定位置时,StackLayout并不是很好.当你有很多观点时,这是很好的,你希望它们都以合理的方式出现.
当你想要像素完美时,有两个很棒的布局:
你可以在这里找到关于这些布局的一些很好的信息:http://adventuresinxamarinforms.com/2015/05/05/demystifying-xamarin-forms-absolutelayout-and-relativelayout-positioning/
对于你的具体问题,我会说使用AbsoluteLayout,因为用它来集中Label是非常容易的.对于此解决方案,我将Nav Bar的StackLayout更改为AbsoluteLayout,并在代码后面添加了布局参数.
XAML:
<AbsoluteLayout x:Name="NavBarLayout" HeightRequest="45" BackgroundColor="Aqua">
<Button x:Name="btnBack" TextColor="White" FontSize="40" BackgroundColor="Transparent" Text="<" />
<Label x:Name="labelTitle" TextColor="White" FontSize="24" Text="Hello World!" YAlign="Center" XAlign="Center" LineBreakMode="TailTruncation" />
</AbsoluteLayout>
Run Code Online (Sandbox Code Playgroud)
背后的代码:
public MyPage ()
{
InitializeComponent ();
NavBarLayout.Children.Add (
btnBack,
// Adds the Button on the top left corner, with 10% of the navbar's width and 100% height
new Rectangle(0, 0, 0.1, 1),
// The proportional flags tell the layout to scale the value using [0, 1] -> [0%, 100%]
AbsoluteLayoutFlags.HeightProportional | AbsoluteLayoutFlags.WidthProportional
);
NavBarLayout.Children.Add(
labelTitle,
// Using 0.5 will center it and the layout takes the size of the element into account
// 0.5 will center, 1 will right align
// Adds in the center, with 90% of the navbar's width and 100% of height
new Rectangle(0.5, 0.5, 0.9, 1),
AbsoluteLayoutFlags.All
);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这是一篇非常旧的帖子,但对于仍然遇到类似问题的人,我使用以下方法解决了它:
HorizontalOptions="Center"
Run Code Online (Sandbox Code Playgroud)
关于StackLayoutXAML 中的定义。我使用的完整定义如下:
<StackLayout Spacing="5" Orientation="Horizontal" x:Name="ButtonLayout" HorizontalOptions="Center">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8632 次 |
| 最近记录: |