在我的Xamarin Forms应用程序中,我试图在移动界面上放置两个标签,一个在左下角,一个在右下角。

这是我目前的尝试。它是一种具有一行和两列的网格布局,每个单元格中都有一个标签,左边的是HorizontalTextAlightment="Start",右边的是HorizontalTextAlightment="End"






    ...other unrelated controls...
    <StackLayout Orientation="Horizontal" Spacing="0" Padding="15" VerticalOptions="End" >
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Label Text="{Binding DeviceId}" HorizontalTextAlignment="Start" Grid.Row="0" Grid.Column="0" />
        <Label Text="{Binding Version}" HorizontalTextAlignment="End" Grid.Row="0" Grid.Column="1" />
      </Grid>


    </StackLayout>

  </StackLayout>






这会产生不想要的结果:(v1.0-1应该向右对齐)

c# - Xamarin布局如何在屏幕的左下角和右下角放置标签-LMLPHP

这就是我要的:

c# - Xamarin布局如何在屏幕的左下角和右下角放置标签-LMLPHP

最佳答案

为什么将视图包装在StackLayout中? Stacklayout将分配所需的最小空间量。这就是为什么您看到屏幕截图1中显示的行为的原因。

如果您只有:

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*" />
      <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Label Text="{Binding DeviceId}" HorizontalTextAlignment="Start" Grid.Row="0" Grid.Column="0" />
    <Label Text="{Binding Version}" HorizontalTextAlignment="End" Grid.Row="0" Grid.Column="1" />
  </Grid>


您将看到所需的行为。

您也可以尝试在HorizontalOptions上使用Label而不是HorizontalTextAlignment



如果确实需要使用StackLayout,则可以尝试将HorizontalOptionsStackLayout设置为FillAndExpand。其中指出:


  FillAndExpand –放置视图,使其不填充并占用
  布局将提供的空间。


参考:https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/stack-layout/#Sizing

10-08 20:01