【问题标题】:Image resizing inside a StackLayout in Xamarin.Forms在 Xamarin.Forms 中的 StackLayout 内调整图像大小
【发布时间】: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 和 Horizo​​ntalOptions 设置为 FillAndExpand?
  • @Blu,感谢您的建议。是的,我已经尝试了所有的水平和垂直选项。我很确定我没有做错任何事情,这是 StackLayout 的一个限制,但知道它为什么不起作用会很有趣。
  • 也许您可以尝试显示两个屏幕截图以使您的问题更清楚?

标签: xamarin.forms stacklayout


【解决方案1】:

我通过将图像包裹在网格中解决了这个问题:

<StackLayouenter code heret Orientation="Vertical">
    <Grid>        
        <Image Source="image.jpg" VerticalOptions="Fill" HorizontalOptions="Fill"/>
    </Grid>
</StackLayout>

我不知道它为什么会起作用,但我想这对你来说是 Xamarin.Forms。

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多