如何在 Horizontal StackLayout 中向 SearchBar 添加填充?
How to add padding to SearchBar inside Horizontal StackLayout?
出于某种目的,我想将 SearchBar
放置在 StackLayout
中,其 Orientation
是 Horizontal
并向 StackLayout
添加填充,但我发现SearchBar
占用所有宽度 space,如第二个 SearchBar
所示,而当 Orientation
为 Vertical
时,它正常工作,如第一个 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>
出于某种目的,我想将 SearchBar
放置在 StackLayout
中,其 Orientation
是 Horizontal
并向 StackLayout
添加填充,但我发现SearchBar
占用所有宽度 space,如第二个 SearchBar
所示,而当 Orientation
为 Vertical
时,它正常工作,如第一个 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>