Open linmic opened 7 years ago
Same here. This is really frustrating
Yeah this is currently happening with me even when the containing view has no border nor border-radius. This is definitely an issue because, for example, I want to show a circular icon on the top + middle area of my modal window. You can see it getting cut off below:
Any solution for this issue? I have also experience it on android development.
I can't find any way around this, guess we are just stuck with different styling for Android.
Same issue here, view with absolute positioning and negative top
works on iOS but got cut off on Android
Facing this as well :(
Works great on iOS:
This is an issue for me as well.
@grabbou @bvaughn know any android dev that could help us with this bug?
If some have a solution for that it's should be great. My java android skill is not good enough to make a PR :(
+1 also having this issue.
Has been a big problem here too. Anybody found a fix?
Also having this problem with Android, neither overflow: hidden
, nor zIndex: 1000
seem to fix the problem!
Same here. Needs a fix! What are you doing to positioning elements in relationship to another one? E.g. for tooltips etc.?
Use an extra container and fake the overflow with it: https://snack.expo.io/@designorant/overflow-visible-android-workaround
import React, { Component } from "react";
import { View, Text, StyleSheet } from "react-native";
export default class App extends Component {
render() {
return (
<View style={styles.mainContainer}>
<View style={styles.componentContainer}>
<View style={[styles.element, styles.element1]} />
<Text style={styles.text}>overflow: "visible"</Text>
</View>
<View style={styles.extraComponentContainer}>
<View style={[styles.element, styles.element2]} />
<View style={styles.componentContainer}>
<Text style={styles.text}>extra container workaround</Text>
</View>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
mainContainer: {
flex: 1,
alignItems: "center",
justifyContent: "space-around"
},
componentContainer: {
backgroundColor: "#d3d3d3",
borderWidth: 1,
borderColor: "grey",
width: 200,
height: 200,
position: "relative",
overflow: "visible" // doesn't do anything
},
extraComponentContainer: {
// fakes overflow but requires more markup
backgroundColor: "#ffff00",
paddingTop: 20,
paddingLeft: 20,
paddingBottom: 20,
paddingRight: 20,
position: "relative"
},
element: {
backgroundColor: "#ff0000",
width: 40,
height: 40
},
element1: {
position: "absolute",
top: -20,
left: -20
},
element2: {
position: "absolute",
top: 0,
left: 0,
zIndex: 100,
elevation: 100
},
text: {
textAlign: "right",
backgroundColor: "transparent"
}
});
@designorant Thanks Michal for your advice! One question remains: Wouldn't the "extraComponentContainer" prevent clicks/actions/events to elements/components below it?
I know in css there is "pointer-events". When its set to "none" (e.g. pointer-events: none; ) The elements lets all events pass through to other elements below it. Anything like that in react-native?
Yes, react native has the pointerEvents
prop.
I have this problem too in rn 0.51.0.
after some testing, it also happened when container has these styles
Thank you @brunolemos !! I had so much stupid layouts to try and get this to work. A full page 'container' View with pointerEvents='none' was all I needed!
@brunolemos thanks! We did manage to fix out issue with poitnerEvents="box-none"
and position absolute
<View style={ styles.container }>
<TouchableOpacity style={ styles.menuButton } onPress={ this.toggleMenu }>
<Ionicons name="ios-menu" size={ 32 } color="#fff" />
</TouchableOpacity>
<Text style={ styles.headerTitle }>VERUS</Text>
<View style={ styles.menu } pointerEvents="box-none">
<Fade visible={ this.state.menuVisible }>
{ menuItems.map( this.renderMenuitem ) }
</Fade>
</View>
</View>
import EStyleSheet from 'react-native-extended-stylesheet';
const styles = EStyleSheet.create( {
$headerHeight: 50,
container: {
flexDirection: 'row',
alignItems: 'center',
// backgroundColor: '#0050aa',
paddingHorizontal: 10,
height: '$headerHeight',
position: 'relative',
},
menuButton: {
marginTop: 3,
},
headerTitle: {
marginLeft: 10,
color: '#fff',
fontSize: 16,
fontWeight: '700',
},
menu: {
position: 'absolute',
top: '$headerHeight',
left: 10,
},
menuItem: {
padding: 10,
backgroundColor: '#0050aa',
borderBottomWidth: 1,
borderBottomColor: '#eee',
},
menuItemName: {
color: '#fff',
fontWeight: '700',
},
} );
export default styles;
I am still facing this issue. If I do not add backgroundColor
to the container, then it works perfectly fine. It only happens on Android.
To overcome this issue you can render a absolute positioned view with your background color on Android. Following code will work on android :)
<View style={{ flex: 1, backgroundColor: 'red' }}>
<View style={{ height: 200, backgroundColor: 'green' }} />
<View style={{ height: 200 }}>
<View style={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, backgroundColor: 'yellow' }} />
<View style={{ height: 50, width: 50, backgroundColor: 'aqua', position: 'absolute', top: -20 }} />
</View>
</View>
I was working on an order summary page in which I need to show all orders made by user. Facing similar issue on android. Tried workaround @designorant suggested and it works fine. Here is the sample code if it helps anyone :) https://snack.expo.io/@harkiratsaluja/timeline
Did anyone find a fix? This issue still exists. I am trying to create a hamburger menu (vertical dropdown) and the container with menu items gets clipped inside the header rendered by react-navigation. This only happens on Android.
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as "For Discussion" or "Good first issue" and I will leave it open. Thank you for your contributions.
the issue hasn't yet been fixed. @stale don't close the issue
I am still facing this issue.
Still an issue ðŸ˜
And still an issue.
I added a faker container: <View style={{position: 'absolute', left: 0, right: 0, top: 0, bottom: 0, borderRadius: 4, backgroundColor: 'rgba(255,255,255, .15)', zIndex: 1 }} />
. Don't use borderRadius, backgroundColor, zIndex
in real container, but only in fake container.
` <View style={s.realContainer } > <View style={{position: 'absolute', left: 0, right: 0, top: 0, bottom: 0, borderRadius: 4, backgroundColor: 'rgba(255,255,255, .15)' }} />
`
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as "For Discussion" or "Good first issue" and I will leave it open. Thank you for your contributions.
Still an issue for me.
@Nagibaba Thanks for this. I create snack with this approach https://snack.expo.io/@denisdov/android-overflow-fix
Still an issue
still an issue
still an issue
Still an issue...
very simple pass a style prop of zIndex:1 to the view that is absolute to make it rise on top of the others
@pinchez254 not work for me
try creating an extra container outside the one in absolute position and give it a Zindex of -1
On Mon, Apr 15, 2019 at 2:17 PM LeeHoo notifications@github.com wrote:
@pinchez254 https://github.com/pinchez254 not work for me
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/facebook/react-native/issues/12534#issuecomment-483210401, or mute the thread https://github.com/notifications/unsubscribe-auth/AlWEKm333hGU6ZKKJKajMIgoZJZcgyXqks5vhF-9gaJpZM4MJgAJ .
THIS HAS WORKED FOR ME 100%
import React from 'react'; import { StyleSheet, View, Text, ScrollView, Image, SafeAreaView, StatusBar, TextInput, Dimensions} from 'react-native';
const WIDTH = Dimensions.get('window').width; const HEIGHT = Dimensions.get('window').height; export default class App extends React.Component {
render() {
return (
<ScrollView horizontal={false} showsVerticalScrollIndicator={false}>
<View style={styles.container}>
<View style={styles.recent}>
<Text>Recent</Text>
</View>
</View>
</ScrollView>
);
}
}
const styles = StyleSheet.create({
container:{
flex:1,
width:WIDTH,
height:HEIGHT,
overflow:'visible',
position:'relative',
},
recent:{
width:'100%',
height:30,
position:'absolute',
top:100,
left:40,
backgroundColor:'#eee',
},
});
import React, { Component } from 'react'; import { Text, View, StyleSheet, ScrollView, Image} from 'react-native';
export default class Practise extends Component{ render(){ let pic = { uri: 'http://www.sclance.com/images/user/User_1176706.png' }; return( <ScrollView style={{flexGrow: 1, backgroundColor: 'red'}}> <View style={{height: 200, backgroundColor: '#03a9f4', alignItems: 'center', justifyContent:'center'}}> <View style={{overflow: 'hidden', height: 100, width: 100, borderRadius: 100/2, backgroundColor: '#fff', }}> <Image source={pic} style={{width: 100, height: 100}}/>
<View style={{backgroundColor: '#fff', height: 100, width: 280, position: 'absolute', top: 160,}}>
</View>
</View>
</ScrollView>
);
}
}
This is the issue that i am facing plz check the code and screenshot too
problem is only when, wwhen we are using srolllview
Still an issue
anyone comes to save us~
For me the problem occurred with "Angular Material" on Tabs component, I put "overflow: visible !important;" on all containers and I finally found it!
If I add these classes, it works!
.mat-tab-body-wrapper { overflow: visible !important; }
.mat-tab-body.mat-tab-body-active { overflow: visible !important; }
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.
Description
If you have an element
position: absolute
with negative offset within a container with a border, it's going to be cut off, it's likeoverflow: hidden
of the container is suddenly enabled by the border. But if you remove the border of the container, it works well. This issue only happens on Android.3198 is a similar issue, and was reported with lots of discussions. However, I believe they are not exactly the same.
Reproduction
I've made an example on rnplay to reproduce the issue.
Solution
TBD
Additional Information