【发布时间】:2021-06-20 08:04:16
【问题描述】:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="StackStuff.MainPage">
<StackLayout Orientation="Vertical">
<Image Source="image.jpg" VerticalOptions="Fill" HorizontalOptions="Fill"/>
</StackLayout>
</ContentPage>
我有一个 Xamarin.Forms 项目,我希望图像在 StackLayout 中调整大小。我将其简化为上面的最小代码,如果我调整窗口大小,图像只会根据窗口宽度调整大小。即,如果我更改高度,图像会从窗口底部剪掉。
如果我将 StackLayout 的方向更改为水平,我会得到相反的结果 - 它会根据高度的变化而不是宽度来调整大小。
如果我完全删除 StackLayout 并且页面上只有图像,那么整个图像将始终可见,这是我在 StackLayout 内时所期望的行为。
谁能解释这是为什么?如果我用 BoxView 替换 Image,它会很高兴地调整大小并保持在 StackLayout 的范围内。
谢谢。
【问题讨论】:
-
检查 Aspect 属性 = uniformfill
-
@Cfun Xamarin.Forms 中的 Aspect 属性没有统一填充。默认为 AspectFit:docs.microsoft.com/en-us/dotnet/api/…
-
抱歉,我无法更好地理解您的问题,但只是作为一个建议 - 您是否尝试将图像和堆栈布局的 VerticalOptions 和 HorizontalOptions 设置为 FillAndExpand?
-
@Blu,感谢您的建议。是的,我已经尝试了所有的水平和垂直选项。我很确定我没有做错任何事情,这是 StackLayout 的一个限制,但知道它为什么不起作用会很有趣。
-
也许您可以尝试显示两个屏幕截图以使您的问题更清楚?