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 {