diff --git a/RNTester/js/StatusBarExample.js b/RNTester/js/StatusBarExample.js index 0df43f42edb371..e5dae5c77c49c2 100644 --- a/RNTester/js/StatusBarExample.js +++ b/RNTester/js/StatusBarExample.js @@ -17,6 +17,7 @@ const { Text, TouchableHighlight, View, + Modal, } = ReactNative; exports.framework = 'React'; @@ -100,6 +101,7 @@ class StatusBarHiddenExample extends React.Component<{}, $FlowFixMeState> { + ); } @@ -380,6 +382,48 @@ class StatusBarStaticAndroidExample extends React.Component<{}> { } } + +class ModalExample extends React.Component<{}, $FlowFixMeState> { + state = { + modalVisible: false, + }; + + _onChangeModalVisible = () => { + this.setState({modalVisible: !this.state.modalVisible}); + }; + + render() { + return ( + + + + modal visible: {this.state.hidden ? 'true' : 'false'} + + + + + + This modal was presented! + + + Close + + + + + + + ); + } +} + const examples = [{ title: 'StatusBar hidden', render() { @@ -436,6 +480,16 @@ const examples = [{ exports.examples = examples; var styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + padding: 20, + backgroundColor: '#f5fcff' + }, + innerContainer: { + borderRadius: 10, + alignItems: 'center', + }, wrapper: { borderRadius: 5, marginBottom: 5, @@ -449,5 +503,8 @@ var styles = StyleSheet.create({ marginTop: 16, marginBottom: 8, fontWeight: 'bold', - } + }, + modalButton: { + marginTop: 10, + }, }); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java index 1d64cb83f8f018..00eac510ab8f35 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java @@ -276,6 +276,17 @@ private View getContentView() { private void updateProperties() { Assertions.assertNotNull(mDialog, "mDialog must exist when we call updateProperties"); + Activity currentActivity = getCurrentActivity(); + if (currentActivity != null) { + int activityWindowFlags = currentActivity.getWindow().getAttributes().flags; + if ((activityWindowFlags + & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) { + mDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } else { + mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + } + if (mTransparent) { mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); } else {