顶部对齐Xamarin一个方面填充图像窗体

顶部对齐Xamarin一个方面填充图像窗体

问题描述:

更新:我已经简化的例子和代码并且提供了一种图像顶部对齐Xamarin一个方面填充图像窗体

我有一个包含两个图像的堆叠布局。第一张图片只是为了展示整个图像。第二个图像具有固定高度,图像方面设置为AspectFill。我看到第二张图像的中间部分,但希望看到最上面的部分。有什么办法可以做到这一点?

这里是XAML

<StackLayout Spacing="20"> 

    <Image Source="darth.jpg" /> 

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

</StackLayout> 

这里是什么样子。我想要第二张图像显示图像的顶部,而不是中间部分。

enter image description here

+0

它可以通过使用依赖项服务来管理或缩放图像。 –

+0

您是否在创建问题时跳过复制RowDefinitions和ColumnDefinitions?我不知道它是否与你的问题有关,但没有这些的网格看起来很奇怪。但也许更重要的是,你有没有尝试过RelativeLayout? – DavidS

+0

只是使用堆栈布局 – Slepz

有在Xamarin.Forms没有代码Image实现,调整图像与Aspect.AspectFill的位置,所以你有两个选择:

  1. 尝试与HeightRequest="100"周围增加额外的包裹第二张图片,并从中删除HeightRequest="100"Aspect="AspectFill"
  2. 在此guide之后,针对目标平台实施您自己的ImageRenderer
+0

试图添加一个额外的包装。没有工作。很确定当图像控制高度小于实际图像高度时,内置的图像渲染器将图像居中。自定义渲染器似乎是不幸的方式。 –

如果您在图像上设置了HeightRequest,这将导致Xamarin.Forms进行剪裁,并且似乎没有任何可以做的事情。不过,如果你用100 HeightRequest包装在一个滚动型,它会使你想:

var image = new Image() 
{ 
    Source = "darth.jpg", 
    Aspect = Aspect.AspectFill 
}; 
var imageWrap = new ScrollView() 
{ 
    HeightRequest = 100, 
    Content = image 
}; 

这将提供额外的功能,用户将能够通过图像滚动。根据具体情况,这可能并不理想。另外,根据Xamarin documentation

ScrollViews不应该嵌套。 ScrollViews不应与其他提供滚动的控件(如ListView和WebView)嵌套 。