React Native 中的响应式图像

IT技术 reactjs react-native native-base
2021-05-02 04:23:00

我从 Facebook API 获取一些图像,我想以响应式显示它们,为 100% 宽度和自动高度。问题似乎是 React Native 裁剪了我的图像。

我尝试了这些解决方案:

方案一

解决方案2

另外,我尝试使用 react-native-auto-height-image 并将其宽度设置为屏幕的宽度。

实际代码:

<TouchableOpacity onPress={() => Linking.openURL(post.url)}>
      <Card style={{ flex: 1 }}>
        <CardItem>
          <Left>
            <Thumbnail source={ThumbnailImage} />
            <Body>
              <Text>My text</Text>
              <Text note>{createdTime}</Text>
            </Body>
          </Left>
        </CardItem>
        <CardItem>
          <Body>
            <AutoHeightImage
              width={Dimensions.get('window').width - 35}
              source={{ uri: post.media.image.src }}
            />
            <Text style={{ marginTop: 10 }}>{post.description}</Text>
          </Body>
        </CardItem>
      </Card>
    </TouchableOpacity>

PS:应用程序使用 Native Base 作为 UI 库。

2个回答

这个问题可以通过使用 paddingTop、width 和 position 轻松解决。试试下面的代码。

<View style={{width:'100%',paddingTop:'100%'}}>
  <Image source={{uri:url}} style={{position:'absolute',left:0,bottom:0,right:0,top:0,resizeMode:'contain'}} />
 </View>

在上面的代码中,根据所需的图像框大小更改 width 和 paddingTop。

我认为解决这个问题很简单,你可以使用Dimensions屏幕的宽度来设置图像的宽度和高度,如下所示:

import { Image, Dimensions } from 'react-native';

var screenWidth = Dimensions.get('window').width;

<View>
    <Image source={...} style={{ width: screenWidth, height: screenWidth }} />
</View>

https://snack.expo.io/ryuCvY8cX