Xamarin.Forms中IsClippedToBounds属性失效 图片设置圆角无效果
该问题是Xamarin.Forms跨平台渲染的兼容性问题,Frame的裁剪属性在部分平台不会作用于子控件,且AspectFill模式的图片会默认超出父容器圆角范围,可通过以下方案解决:
- 最简适配方案:给子Image控件也添加
IsClippedToBounds="True"属性,开启子元素自身的裁剪即可匹配父容器圆角,修改后代码如下:
<Frame CornerRadius="10" BackgroundColor="White" IsClippedToBounds="True" Padding="0"> <Image Source="House.jpg" Aspect="AspectFill" IsClippedToBounds="True"/> </Frame>
- 精简代码方案:Xamarin.Forms 4.8及以上版本支持Image控件自带圆角属性,可直接去掉Frame嵌套实现效果:
<Image Source="House.jpg" Aspect="AspectFill" CornerRadius="10"/>
- 低版本兼容方案:若使用的Xamarin.Forms版本较低不支持Image的CornerRadius属性,可通过Clip属性手动裁剪圆角:
<Image Source="House.jpg" Aspect="AspectFill"> <Image.Clip> <RoundRectangleGeometry Rect="0,0,{Binding Width}, {Binding Height}" CornerRadius="10"/> </Image.Clip> </Image>
如果仅Android平台出现该异常,可将Android项目的TargetFramework版本升级到Android 10及以上,可解决多数默认渲染的裁剪适配问题。
内容的提问来源于stack exchange,提问作者Nima Najafpour
相关产品推荐
相关产品推荐

