是否可以Image
采用其父容器的100%宽度,而实际上将整个图像放入该容器中而不进行裁剪,并自动调整高度以保留长宽比?
我在SO和Xamarin论坛上都读过类似的问题,但是显然,如果不实现自定义渲染器或手动计算代码中的正确大小,就无法做到这一点。但是要在代码中进行计算,您将需要图像尺寸或纵横比。对于那些都不为人所知的应用,这是一个问题。
在CSS方面,我正在寻找的解决方案类似于
width:100%; height:auto;
在我看来,为这种琐碎的任务实现定制渲染器是一个过大的选择,对Xamarin来说是一个巨大的尴尬。除非我理解不对。
我无法找到解决此问题的纯XAML解决方案,因此决定使用ffimageloading的Success
事件来查找已加载图像的原始宽度和高度,并从这些值中获取长宽比,进行存储,并在SizeAllocated
事件中使用它来维护图像的宽高比,同时确保其宽度为父容器的100%。
样例代码:
private void testImage_OnSuccess(object sender, CachedImageEvents.SuccessEventArgs e)
{
var image = sender as CachedImage;
double width = e.ImageInformation.OriginalWidth;
double height = e.ImageInformation.OriginalHeight;
ratio = width / height; // store it in a variable
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (this.Width > 0 && ratio != 0) // width of the parent container
testImage.HeightRequest = this.Width / ratio;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句