顶部对齐Xamarin一个方面填充图像窗体
问题描述:
更新:我已经简化的例子和代码并且提供了一种图像顶部对齐Xamarin一个方面填充图像窗体
我有一个包含两个图像的堆叠布局。第一张图片只是为了展示整个图像。第二个图像具有固定高度,图像方面设置为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"
周围增加额外的包裹第二张图片,并从中删除HeightRequest="100"
和Aspect="AspectFill"
。 - 在此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)嵌套 。
它可以通过使用依赖项服务来管理或缩放图像。 –
您是否在创建问题时跳过复制RowDefinitions和ColumnDefinitions?我不知道它是否与你的问题有关,但没有这些的网格看起来很奇怪。但也许更重要的是,你有没有尝试过RelativeLayout? – DavidS
只是使用堆栈布局 – Slepz