Instead of wrapping your content in <Image> , I think you would be better off wrapping it in an absolute ly element that will stretch to cover the screen.
<View style={styles.container}> <View style = {styles.backgroundContainer}> <Image source = {require('./img/landing-background.jpg')} resizeMode = 'cover' style = {styles.backdrop} /> </View> <View style = {styles.overlay}> <Text style = {styles.headline}>It should appear in front of the Background Image</Text> <Image style = {styles.logo} source = {require('./img/logo.png')} /> </View> </View> var styles = StyleSheet.create({ backgroundContainer: { position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, }, container: { flex: 1, alignItems: 'center', }, overlay: { opacity: 0.5, backgroundColor: '#000000' }, logo: { backgroundColor: 'rgba(0,0,0,0)', width: 160, height: 52 }, backdrop: { flex:1, flexDirection: 'column' }, headline: { fontSize: 18, textAlign: 'center', backgroundColor: 'black', color: 'white' } });
source share