我在真正的 Android 设备上使用 React Native。在主应用程序组件上仅使用以下渲染功能创建一个非常简单的应用程序时...
render() {
<Image
source={{uri:'http://resizing.flixster.com/DeLpPTAwX3O2LszOpeaMHjbzuAw=/53x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/16/47/11164719_ori.jpg'}}
style={
{
flex: 1,
resizeMode: 'contain',
backgroundColor: 'yellow'
}
} />
}
我在我的设备上得到以下结果:
如您所见,整个背景是黄色的,这告诉我们图像元素确实占据了整个屏幕尺寸。但它只是呈现错误。'cover' resizeMode 确实按预期工作('stretch' 模式也是如此)。不起作用的是“包含”模式(从我的角度来看,这是最重要的一种)。将图像放在 ListView 上时,问题会变得更糟,因为图像甚至不显示。
更新 1 正如 Frederick 指出的那样,“包含”仅在图像大于容器大小时才有效。那么我们怎样才能让图像占据整个容器的大小,同时保持它的纵横比呢?React 中的样式尚不支持百分比,并且我不知道如何在加载图像后获取图像的宽度和高度属性。与 Image 组件关联的所有事件都没有提供该信息。
更新 2 好消息。我现在正在使用 React Native v0.24.1,看起来图像“包含”模式现在可以按预期工作,即使实际图像大小小于其容器。zvona 的解决方案很好(虽然你需要记住 onLayout 会给你图像渲染的图像视图大小,但不是正在加载的实际图像大小)。至于现在,我不知道有什么方法可以找出实际的图像大小(假设您正在从网络资源中检索图像并且您不知道大小,如果您想计算,这可能非常重要它的纵横比)。