C# 对齐标签和条目,使条目在xamarin表单中自动调整宽度并向右对齐

C# 对齐标签和条目,使条目在xamarin表单中自动调整宽度并向右对齐,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,我正在尝试创建一个标签,旁边有条目,我正在尝试实现下面的效果(我的条目的边框设置为透明,这就是它下面没有线条的原因): 如果条目文本和标签文本都对齐,则条目应向左“增长”,因为键入的数字越多,并将“£”符号向左移动,但这是迄今为止我所能做的最好的: 这是使用以下代码: <StackLayout Orientation="Horizontal" Grid.Row="0" Grid.Column="1"> <Label HorizontalOptions="Fill

我正在尝试创建一个标签,旁边有条目,我正在尝试实现下面的效果(我的条目的边框设置为透明,这就是它下面没有线条的原因)

如果条目文本和标签文本都对齐,则条目应向左“增长”,因为键入的数字越多,并将“£”符号向左移动,但这是迄今为止我所能做的最好的:

这是使用以下代码:

<StackLayout Orientation="Horizontal" Grid.Row="0" Grid.Column="1">
      <Label HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand" Text="£" FontSize="20" FontFamily="{StaticResource RobotoLight}" TextColor="#C7C7C7" Grid.Column="0"/>
      <controls:BorderlessEntry Text="{Binding Income.MonthlyIncome}" WidthRequest="80" HorizontalOptions="EndAndExpand" PlaceholderColor="#C7C7C7" Placeholder="0" VerticalOptions="CenterAndExpand" FontSize="20" FontFamily="{StaticResource RobotoLight}" TextColor="#C7C7C7" Grid.Column="1"/>
 </StackLayout>

但尽管两者都居中,条目文本略高于标签文本,我也不知道如何使条目根据文本扩展宽度,或如何将其向右对齐(或堆栈布局末端)


我知道我已经将3个问题合并到了一个问题中,因此,如果有人能够提供帮助,哪怕只是其中的一部分,这将是一个很大的帮助。

因此,对于您提到的左侧条目,您可以尝试为StackLayout、Label和entry提供EndAndExpand等水平选项

此外,对于“条目文本略高于标签文本”,您可以从底部到标签留出一些边距。如
Margin=“0,0,0,5”
您可以尝试使用3,4,5,这对边距效果最好。之所以会发生这种情况,是因为入口边界设置为透明,所以它在那里但不可见


如果您还有其他问题,请告诉我。

因此,为了使条目如您所述在左侧增长,您可以尝试为堆栈布局、标签和条目提供水平选项,如EndAndExpand

此外,对于“条目文本略高于标签文本”,您可以从底部到标签留出一些边距。如
Margin=“0,0,0,5”
您可以尝试使用3,4,5,这对边距效果最好。之所以会发生这种情况,是因为入口边界设置为透明,所以它在那里但不可见


如果您还有其他问题,请告诉我。

我使用一个简单的条目和标签进行测试,您可以使用HorizontalOptions属性并设置为EndAndExpandEnd以使标签和条目正确对齐,如:

<StackLayout Orientation="Horizontal">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

        </Grid>
        <StackLayout Grid.Column="0"   VerticalOptions="Start" HeightRequest="60">
            <Label  Text="Monthly Income" VerticalOptions="CenterAndExpand"></Label>
        </StackLayout>

        <StackLayout Grid.Column="1"  Orientation="Horizontal"  HorizontalOptions="FillAndExpand" VerticalOptions="Start"  HeightRequest="60" >
            <Label HorizontalOptions="EndAndExpand" VerticalOptions="Center" Text="£" FontSize="20"  TextColor="#C7C7C7" />
            <Entry  PlaceholderColor="#C7C7C7" HorizontalOptions="End" WidthRequest="100" VerticalOptions="Center" FontSize="18"  TextColor="#C7C7C7" />
        </StackLayout>

</StackLayout>

其效果如下:


并使条目自动调整宽度,也许您应该使用自定义渲染器来实现它

我使用一个简单的条目和标签进行测试,您可以使用水平选项属性并设置为EndAndExpandEnd以使标签和条目正确对齐,如:

<StackLayout Orientation="Horizontal">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

        </Grid>
        <StackLayout Grid.Column="0"   VerticalOptions="Start" HeightRequest="60">
            <Label  Text="Monthly Income" VerticalOptions="CenterAndExpand"></Label>
        </StackLayout>

        <StackLayout Grid.Column="1"  Orientation="Horizontal"  HorizontalOptions="FillAndExpand" VerticalOptions="Start"  HeightRequest="60" >
            <Label HorizontalOptions="EndAndExpand" VerticalOptions="Center" Text="£" FontSize="20"  TextColor="#C7C7C7" />
            <Entry  PlaceholderColor="#C7C7C7" HorizontalOptions="End" WidthRequest="100" VerticalOptions="Center" FontSize="18"  TextColor="#C7C7C7" />
        </StackLayout>

</StackLayout>

其效果如下:


并使条目自动调整宽度,也许您应该使用自定义渲染器来实现它

不幸的是,“EndAndExpand”只使条目宽1个字符,实际上并没有将其放在末尾。边距也只是将文本的底部切掉,而不是向上移动。不幸的是,“EndAndExpand”只使条目宽1个字符,实际上并没有将其放在末尾。页边空白也只是将文本的底部切掉,而不是向上移动。行吗?行吗?