代码之家  ›  专栏  ›  技术社区  ›  Ian Warburton

在网格单元中垂直对齐BoxView

  •  0
  • Ian Warburton  · 技术社区  · 6 年前

    <Grid Grid.Column="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="10" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <BoxView Grid.Column="0" BackgroundColor="Red"></BoxView>
        <Label Grid.Column="1" x:Name="lbl1"/>
    </Grid>
    
    <Style TargetType="BoxView">
        <Setter Property="WidthRequest" Value="10" />
        <Setter Property="HeightRequest" Value="10" />
        <Setter Property="VerticalOptions" Value="Center" />
        <Setter Property="HorizontalOptions" Value="Center" />
    </Style>
    <Style TargetType="Label">
        <Setter Property="FontSize" Value="12" />
        <Setter Property="YAlign" Value="Center" />
    </Style>
    

    enter image description here

    设置 VerticalOptions Start End

    4 回复  |  直到 6 年前
        1
  •  0
  •   pinedax    6 年前

    使用 CenterAndExpand 相反

    <Style TargetType="BoxView">
        <Setter Property="WidthRequest" Value="10" />
        <Setter Property="HeightRequest" Value="10" />
        <Setter Property="VerticalOptions" Value="CenterAndExpand" />
        <Setter Property="HorizontalOptions" Value="Center" />
    </Style>
    

    Here's 一个很好的解释。

        2
  •  0
  •   Volodymyr Lymar    6 年前

    1) 尝试添加明确的行定义及其高度;

    或者 肮脏的黑客

        3
  •  0
  •   Ivan Ičin    6 年前

    你也需要在标签上使用这个:

    <Setter Property="VerticalOptions" Value="Center" />
    

        4
  •  0
  •   Nick Kovalsky    6 年前

    当与文本不垂直对齐时:

    1. 尝试以下操作:设置标签

    VerticalOptions="Fill"

    VerticalTextAlignment="Center"
    
    1. 考虑这样一种情况:元素是垂直对齐的,但由于字体创建者的设置、字体在底部或顶部添加了更多的空格,所以看起来不是这样。这可以通过自定义渲染器系统或愚蠢的

      TranslationY="1"

    "-0.5" 无论什么。。