如何在Xamarin Forms的XAML中创建适配所有屏幕尺寸的全屏矩形?
解决Xamarin.Forms中Rectangle适配屏幕尺寸的问题
我来帮你搞定这个边框适配的问题!你遇到的核心问题是对HeightRequest的用法理解有误——1*是Grid行/列的尺寸单位,不能直接用在HeightRequest属性上,而且要让Rectangle填满屏幕,关键是要正确设置它的布局选项。
问题分析
你的Grid已经设置了VerticalOptions="FillAndExpand"和HorizontalOptions="FillAndExpand",这意味着它会填满父容器的空间,但Rectangle没有设置正确的布局属性,导致它无法跟着Grid一起扩展。另外,HeightRequest接受的是具体数值(比如400)或者Auto,不支持*这种比例单位。
解决方案
修改Rectangle的属性,去掉无效的HeightRequest,并添加让它填充整个Grid单元格的布局选项:
- 给Rectangle设置
HorizontalOptions="FillAndExpand"和VerticalOptions="FillAndExpand",这样它会自动填满所在的Grid单元格 - 移除
HeightRequest="1*",这个属性在这里完全没用
修改后的完整XAML代码如下:
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> <xct:CameraView x:Name="cameraView" CameraOptions="Back" CaptureMode="Photo" OnAvailable="CameraView_OnAvailable"> <xct:CameraView.Behaviors> <xct:EventToCommandBehavior Command="{Binding PhotoCapturedCommand}" EventName="MediaCaptured" /> </xct:CameraView.Behaviors> </xct:CameraView> <Rectangle Fill="Transparent" Stroke="Blue" Opacity="0.7" StrokeThickness="150" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/> </Grid> </StackLayout>
额外提示
- 我给外层的StackLayout也加上了
FillAndExpand,确保它能占满整个页面的可用空间,避免出现留白 - 如果觉得
StrokeThickness="150"太粗,可以根据实际需求调整数值,它控制的是边框的宽度
这样修改后,Rectangle就会完美适配所有屏幕尺寸,在相机取景框上方显示一个粗透明边框啦!
内容的提问来源于stack exchange,提问作者Mustafa Alahmid
相关产品推荐
相关产品推荐

