如何获取添加超出边界图片后AbsoluteLayout的当前尺寸?
获取扩展后AbsoluteLayout的真实尺寸
针对你遇到的问题,核心原因是添加图片后布局尚未完成重绘,直接读取尺寸会拿到旧值,以下是几种可靠的解决方式:
监听布局变更事件
利用AbsoluteLayout的LayoutChanged事件,在布局完成更新后再获取最新尺寸,这是最稳妥的方式:// 在初始化时绑定事件 yourAbsoluteLayout.LayoutChanged += OnAbsoluteLayoutLayoutChanged; // 事件处理方法 private void OnAbsoluteLayoutLayoutChanged(object sender, EventArgs e) { var layout = sender as AbsoluteLayout; if (layout == null) return; double currentWidth = layout.Width; double currentHeight = layout.Height; // 在这里使用最新的尺寸值 }主动触发尺寸计算
如果需要在添加图片后立即获取尺寸,可以手动调用Measure方法强制布局重新计算自身所需大小,然后通过DesiredSize获取真实尺寸:// 完成图片添加操作后 yourAbsoluteLayout.Measure(double.PositiveInfinity, double.PositiveInfinity); double realWidth = yourAbsoluteLayout.DesiredSize.Width; double realHeight = yourAbsoluteLayout.DesiredSize.Height;确认布局配置正确性
确保AbsoluteLayout的布局选项没有被ScrollView限制:- 将AbsoluteLayout的
HorizontalOptions和VerticalOptions设置为Start(而非Fill),让它能根据内容自由扩展 - 保证ScrollView的直接子元素就是该AbsoluteLayout,没有额外的嵌套布局限制其尺寸
- 将AbsoluteLayout的
内容的提问来源于stack exchange,提问作者mustapha chaibi
相关产品推荐
相关产品推荐

