Xamarin.forms 顶部对齐Xamarin表单中的纵横比填充图像

Xamarin.forms 顶部对齐Xamarin表单中的纵横比填充图像,xamarin.forms,Xamarin.forms,更新:我简化了示例和代码,并提供了一幅图像 我有一个包含两个图像的堆栈布局。第一个图像只是显示整个图像。第二个图像具有固定高度,并且图像纵横比设置为AspectFill。我看到了第二张图片的中间部分,但希望看到顶部。我有什么办法可以做到这一点吗 这是XAML <StackLayout Spacing="20"> <Image Source="darth.jpg" /> <Image Source="darth.jpg" He

更新:我简化了示例和代码,并提供了一幅图像

我有一个包含两个图像的堆栈布局。第一个图像只是显示整个图像。第二个图像具有固定高度,并且图像纵横比设置为AspectFill。我看到了第二张图片的中间部分,但希望看到顶部。我有什么办法可以做到这一点吗

这是XAML

<StackLayout Spacing="20">

    <Image Source="darth.jpg" />

    <Image Source="darth.jpg"
           HeightRequest="100"
           Aspect="AspectFill" />

</StackLayout>

这是它的样子。我希望第二张图片显示图片的顶部,而不是中间部分


Xamarin.Forms
Image
实现中没有代码,它使用
Aspect.AspectFill
调整图像的位置,因此这里有两个选项:

  • 尝试在第二个图像周围添加一个额外的环绕,并从中删除
    HeightRequest=“100”和
    Aspect=“AspectFill”
  • 按照此步骤为目标平台实现自己的
    ImageRenderer

  • 如果在图像上设置HeightRequest,这将导致Xamarin.Forms进行剪切,而您似乎对此无能为力。但是,如果在ScrollView中以100的HeightRequest将其包装,它将按照您的需要进行渲染:

    var image = new Image()
    {
        Source = "darth.jpg",
        Aspect = Aspect.AspectFill
    };
    var imageWrap = new ScrollView()
    {
        HeightRequest = 100,
        Content = image
    };
    
    这增加了用户可以滚动浏览图像的功能。根据具体情况,这可能并不可取。此外,根据:

    滚动视图不应嵌套。滚动视图不应嵌套 使用其他提供滚动的控件,如ListView和WebView


    可以通过使用依赖关系服务管理或缩放图像来实现。在创建问题时是否跳过复制行定义和列定义?我不知道这是否与你的问题有关,但是没有这些的网格看起来很奇怪。但也许更重要的是,你尝试过相对布局吗?只使用StackLayout与父布局无关。我重新编写了这个问题,以从问题中删除网格和自定义控件。这与图像控件处理具有固定高度的纵横比填充的方式有关。尝试添加额外的环绕。没用。当图像控件高度小于实际图像高度时,非常确定内置图像渲染器将图像居中。不幸的是,自定义渲染器似乎是一种可行的方法。它并非在所有情况下都能很好地工作。按预期在iOS上工作。然而,在Android上,只有当源位图大于图像控件的宽度时,它才起作用。如果它比它小,它会以这样的方式剪辑内容,即使滚动也无法查看所有内容。