Image.resizeMode.contain在元素

时间:2015-09-25 11:00:51

标签: android react-native

我在Android上尝试使用React native,但是当使用Image.resizeMode.contain制作全屏幕背景时,React native会在我的元素上方创建一个空白区域。

代码:

render: function() {
  return (
    <View style={Styles.restaurant_container}>
      <Image
        style={Styles.backdrop}
        resizeMode={Image.resizeMode.contain}
        source={require('image!login_background')}>
          <View style={Styles.backdropView}>
            <Text style={Styles.headline}>Headline</Text>
          </View>
      </Image>
    </View>
  );
}

风格:

var Styles = StyleSheet.create({
  restaurant_container: {
    flex: 1,
    alignItems: 'center',
    backgroundColor: '#000000',
  },
  backdrop: {
    flex: 1,
    paddingTop: 60
  },
  backdropView: {
    flex: 1,
    backgroundColor: 'rgba(0,0,0,0)',
    alignItems: 'center'
  },
  headline: {
    fontSize: 20,
    textAlign: 'center',
    backgroundColor: 'rgba(240,240,240,0.7)',
    color: 'Black'
  }
})

导致: Imgur

撤回看不到内部的视图似乎解决了这个问题。 当删除resizeMode.contain规则和/或使用封面或拉伸背景中的图片缩放到实际大小时,它忽略了大小。

1 个答案:

答案 0 :(得分:0)

主要问题是resizeMode =“ contain”不会降低图像的高度并将其居中在其原始大小内。 一种解决方案是设置图像的高度和宽度并删除resizeMode。 所以您的代码将是:

render: function() {
  return (
    <View style={Styles.restaurant_container}>
      <Image
        style={Styles.backdrop}
        source={require('image!login_background')}>
          <View style={Styles.backdropView}>
            <Text style={Styles.headline}>Headline</Text>
          </View>
      </Image>
    </View>
  );
}

您的风格将如下:

var Styles = StyleSheet.create({
  backdrop: {
    flex: 1,
    paddingTop: 60,
    width: null,
    height: 400

  },
})

在高度上设置所需的大小。