You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:41:55