Xamarin.Forms单元格旋转Label不截断方案及ColumnDefinition关联问题
问题根因
Xamarin.Forms 的布局计算逻辑是先计算控件未旋转时的原始尺寸,再执行旋转渲染,因此Grid会直接基于Label的横向文本原始宽度做裁切,不会参考旋转后的实际展示尺寸。
解决方案
方案1:主动适配旋转后尺寸(推荐,无溢出风险)
手动指定Label未旋转时的宽高,和旋转后的单元格尺寸做反向适配:旋转-90度后宽高会互换,因此将未旋转的Label宽度设为单元格高度(此处为100)、高度设为列宽(此处为50),同时让Label居中显示即可。
<Grid ColumnDefinitions="50" HeightRequest="100"> <Label Rotation="-90" Text="LongText" WidthRequest="100" HeightRequest="50" HorizontalOptions="Center" VerticalOptions="Center" /> </Grid>
方案2:关闭Grid边界裁切(简单,适合无相邻控件场景)
直接将Grid的ClippedToBounds属性设为False,关闭单元格的内容溢出裁切,就算Label原始宽度超过列宽也不会被截断,注意如果Grid旁有其他列内容时可能出现重叠。
<Grid ColumnDefinitions="50" HeightRequest="100" ClippedToBounds="False"> <Label Rotation="-90" Text="LongText" /> </Grid>
内容的提问来源于stack exchange,提问作者Alex Logvin
相关产品推荐
相关产品推荐

