Xamarin.Forms Grid列宽设置:左列自适应右列占满剩余空间
解决Xamarin.Forms Grid两列自适应布局问题
嘿,我来帮你搞定这个Grid布局的问题!你现在的问题是Grid默认没有指定列宽规则,所以它会把可用宽度平均分给两列,导致各占50%。要实现左侧列仅占自身所需空间、右侧列占剩余全部空间的效果,只需要给Grid添加**列定义(ColumnDefinitions)**就可以了。
修正后的完整代码
<Grid VerticalOptions="Start" Margin="10,0,10,0"> <!-- 关键:添加列定义,左边自适应内容,右边占剩余空间 --> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid Grid.Row="0" Grid.Column="0" HorizontalOptions="Start"> <Label Text="· Exclude Hidden" /> </Grid> <Grid Grid.Row="0" Grid.Column="1" HorizontalOptions="Start"> <Label Text="All cards except those tagged as hidden" /> </Grid> <Grid Grid.Row="1" Grid.Column="0" HorizontalOptions="Start"> <Label Text="· Include Hidden" /> </Grid> <Grid Grid.Row="1" Grid.Column="1" HorizontalOptions="Start"> <!-- 修复了你代码里未闭合的Label标签,补上了对应文本 --> <Label Text="All cards including hidden ones" /> </Grid> <Grid Grid.Row="2" Grid.Column="0" HorizontalOptions="Start"> <Label Text="· Favorites" /> </Grid> <Grid Grid.Row="2" Grid.Column="1" HorizontalOptions="Start"> <Label Text="Only cards tagged as favorites" /> </Grid> <Grid Grid.Row="3" Grid.Column="0" HorizontalOptions="Start"> <Label Text="· Hidden" /> </Grid> <Grid Grid.Row="3" Grid.Column="1" HorizontalOptions="Start"> <Label Text="Only those cards tagged as hidden" /> </Grid> </Grid>
关键说明
ColumnDefinition Width="Auto":这个设置会让左侧列的宽度自动适配里面内容的实际宽度,不会占用多余空间。ColumnDefinition Width="*":右侧列使用*表示“占据所有剩余可用宽度”,这样就能填满Grid剩下的空间。- 另外我还修复了你代码里一处语法错误:第二行右侧的Label标签没有闭合,补上了对应的文本内容,避免运行时报错。
这样修改后,你的Grid布局就会完全符合需求啦!
内容的提问来源于stack exchange,提问作者Alan2
相关产品推荐
相关产品推荐

