I'm building a react native app. I have a circular image with text above it which the user can click to go to another page.
This works great on iOS, however on Android I can't click. When I inspect on Android and click the TouchableHighlight
it seems like the appBody
view I have as a parent is what's being clicked. I stripped the whole page down and removed the appBody
leaving just the TouchableHighlight
and still won't click on Android phones.
I noticed as soon as I remove the absolute
position from the viewTextWrap
it then triggers the click! However without the absolute position the Test
text and background color is behind the image. I was reading absolute position with zIndex causes issue on Android, and to fix this by using elevation
. So anywhere I have a Zindex
I added the same elevation
, but still doesn't work.
Here is my code:
<View style={globalStyle.appBody}><TouchableHighlight style={{zIndex: 100, elevation: 100}} onPress={() => this._goToPage('Test')} underlayColor={'transparent'}><View style={styles.ImageWrap}><Image style={[globalStyle.ProfileImage, { top: -90 }]} source={{ uri: this.state.pic }} defaultSource={require('../../assets/images/placeholder.png')} /><Image style={styles.viewImage} source={require('../../assets/images/test.png')} /><View style={styles.viewTextWrap}><Text style={styles.viewText}>Test</Text></View></View></TouchableHighlight> //More code in the body here</View>
And the css for those classes:
appBody: { backgroundColor: '#fff', padding: 25, height: '100%'},ImageWrap: { position: 'relative', backgroundColor: '#fff',},ProfileImage: { position: "absolute", zIndex: 100, top: -68, height: 136, width: 136, borderRadius: 136 / 2, alignSelf: 'center',},viewImage: { position: "absolute", zIndex: 100, elevation: 100, //Tried adding to match zIndez alignSelf: 'center', bottom: -50,},viewTextWrap: { position: "absolute", //If I remove this, the click works but the text is behind the image zIndex: 101, elevation: 101, //Tried adding to match zIndez alignSelf: 'center', bottom: -32,},viewText: { position: 'relative', fontSize: 12, textAlign: "center",},