It worked for me.
import React from 'react' import { View, Text, Image } from 'react-native' class Test extends React.Component { render() { return ( <View> <Image source={{ uri: "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQL6goeE1IdiDqIUXUzhzeijVV90TDQpigOkiJGhzaJRbdecSEf" }} style={{ height: 200, left: 0, right: 0 }} resizeMode="contain" /> <Text style={{ textAlign: "center" }}>Papaya</Text> </View> ); } } export default Test;
Another way to get the width of the parent view after the layout event.
<View style={{ flex: 1}} layout={(event) => { this.setState({ width: event.nativeEvent.layout.width }); }} />
When you get the view of the parent width view from the layout event, you can assign a width to the image tag.
import React from 'react'; import { View, Image } from 'react-native'; class Card extends React.Component { constructor(props) { super(props); this.state = { height: 300, width: 0 }; } render() { return ( <View style={{ flex: 1, flexDirection: 'row' }}> <View style={{ width: 50, backgroundColor: '#f00' }} /> <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#fafafa' }} onLayout={(event) => { this.setState({ width: event.nativeEvent.layout.width }); }} > { this.state.width === 0 ? null : ( <Image source={{ uri: "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQL6goeE1IdiDqIUXUzhzeijVV90TDQpigOkiJGhzaJRbdecSEf" }} style={{ width: this.state.width, height: this.state.height }} resizeMode="contain" /> ) } </View> </View> ); } } export default Card;
source share