如何在 Horizo​​ntal StackLayout 中向 SearchBar 添加填充?

How to add padding to SearchBar inside Horizontal StackLayout?

出于某种目的,我想将 SearchBar 放置在 StackLayout 中,其 OrientationHorizontal 并向 StackLayout 添加填充,但我发现SearchBar 占用所有宽度 space,如第二个 SearchBar 所示,而当 OrientationVertical 时,它正常工作,如第一个 SearchBar 所示下图:

这是两个 StackLayout 的代码:

    <StackLayout Orientation="Vertical" Padding="100,0,100,0">
        <SearchBar/>
    </StackLayout>

    <StackLayout Orientation="Horizontal" Padding="100,0,100,0">
        <SearchBar/>
    </StackLayout>

我还尝试将水平方向 StackLayout 放入垂直方向 StackLayout 中,如下面的代码所示:

    <StackLayout Orientation="Vertical" Padding="100,0,100,0">
        <StackLayout Orientation="Horizontal">
            <SearchBar/>
        </StackLayout>
    </StackLayout>

但是也没什么用,那怎么解决呢?

原因: 当您在 stackLayout 中添加 searchBar 时,stackLayout 不会使子视图适合大小。所以尽管你设置了 padding 。searchBar 仍然会超出 stackLayout 的边界。

解法:

将 srachBar 放在 Grid.

<StackLayout  Orientation="Horizontal"  Padding="100,0,100,0">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*" /> 
    </Grid.RowDefinitions>

   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="175" />                   
   </Grid.ColumnDefinitions>

   <SearchBar Grid.Row="0" Grid.Column="0" />

  </Grid>

</StackLayout>