Joh*_*ore 1 xamarin xamarin.forms
使用水平 StackLayout,我想在屏幕上显示 3 个等宽的标签。我不想使用 WidthRequest 属性,而是希望每个标签的大小与“框”中居中的内容相同。我希望标签根据它们运行的设备调整大小。所以 3 个标签,宽度相等,无论设备如何。
我知道这可以通过 Grid (Width="Auto") 来完成,但是水平对齐的 StackLayout 是否可能?
我以为这会奏效...
<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<Label Text="aaaa"
HorizontalOptions="FillAndExpand"
HorizontalTextAlignment="Center"
BackgroundColor="Blue" />
<Label Text="aaaaaaaaaaaa"
HorizontalOptions="FillAndExpand"
HorizontalTextAlignment="Center"
BackgroundColor="Green" />
<Label Text="aa"
HorizontalOptions="FillAndExpand"
HorizontalTextAlignment="Center"
BackgroundColor="Red" />
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
但这只是导致了这个......
原因:当您在 stackLayout 中添加标签时,stackLayout 不会使子视图适合大小。
解决方案:
将标签放在网格中。请参考以下代码。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="aaaa" BackgroundColor="Blue" />
<Label Grid.Row="0" Grid.Column="1" Text="aaaaaaaaaaaa" BackgroundColor="Green"/>
<Label Grid.Row="0" Grid.Column="2" Text="aa" BackgroundColor="Red" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |