当文本换行到多列时,最小化Xamarin.Forms网格的高度

当文本换行到多列时,最小化Xamarin.Forms网格的高度,xamarin.forms,Xamarin.forms,在HTML中,当一个表有多个可以换行的文本列时,浏览器会计算最佳列宽以最小化表的高度。例如,对于以下HTML,如中所示,第一列将比第二列宽一点。具体多少取决于字体细节 那只敏捷的棕色狐狸跳过了那只懒狗 懒惰的棕色狐狸跳过了那条狗 Android的TableLayout通过可收缩列支持这一点。然而,对于Xamarin.Forms网格,这似乎是不可能的。您可以使用星号强制比例,但它不是基于列内容的动态比例。将列设置为“自动”没有帮助;它将占用全部可用宽度,而不与后面的列共享该宽度 有没有办法让G

在HTML中,当一个表有多个可以换行的文本列时,浏览器会计算最佳列宽以最小化表的高度。例如,对于以下HTML,如中所示,第一列将比第二列宽一点。具体多少取决于字体细节


那只敏捷的棕色狐狸跳过了那只懒狗
懒惰的棕色狐狸跳过了那条狗
Android的TableLayout通过可收缩列支持这一点。然而,对于Xamarin.Forms网格,这似乎是不可能的。您可以使用星号强制比例,但它不是基于列内容的动态比例。将列设置为“自动”没有帮助;它将占用全部可用宽度,而不与后面的列共享该宽度


有没有办法让Grid或任何其他控件共享列宽,从而最小化总高度?

很遗憾,答案是否定的。Xamarin Forms Grid不是基于任何平台控件,它只是根据GridCalc.cs中自己的计算设置元素位置

栅格仅支持星形、自动和栅格长度

  • 星形=将屏幕分成相等的部分

  • 自动=匹配内容

  • GridLength=指定精确的高度或宽度


最好的选择可能是将第二列设置为定义的宽度,然后第一列将随着屏幕大小而缩小和增大。

很遗憾,简短的回答是否定的。Xamarin Forms grid不基于任何平台控件,它只是根据GridCalc.cs中自己的计算设置元素位置

栅格仅支持星形、自动和栅格长度

  • 星形=将屏幕分成相等的部分

  • 自动=匹配内容

  • GridLength=指定精确的高度或宽度


最好的选择可能是将第二列设置为定义的宽度,然后第一列将随着屏幕大小而缩小和增大。

任何一列中的固定宽度都存在一个问题,即如果文本不占用太多空间,可能会导致看起来不自然的间隙。对于我的用例来说,一个合理的解决方法是,如果您可以设置一个基于星形的最大宽度。例如,如果第二列为星形,但第一列为自动,但最大为星形。这很容易计算,但我不知道是否有任何方法可以添加功能。如果你设置一个自动,它会使用所有需要的空间,然后星星只会分割剩余的空间。唯一的方法是计算屏幕本身的宽度,计算文本的宽度,并手动设置网格宽度。网格没有内置的可收缩列。两列中的固定宽度的问题是,如果文本不占用太多空间,可能会导致外观不自然的间隙。对于我的用例来说,一个合理的解决方法是,如果您可以设置一个基于星形的最大宽度。例如,如果第二列为星形,但第一列为自动,但最大为星形。这很容易计算,但我不知道是否有任何方法可以添加功能。如果你设置一个自动,它会使用所有需要的空间,然后星星只会分割剩余的空间。唯一的方法是计算屏幕本身的宽度,计算文本的宽度,并手动设置网格宽度。网格没有内置的可收缩柱。