diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index bcdcef7dc086dc6ca4bec8d7fdad89e5a9c9cb1f..194741087b874d5a7dc1dd4cd5f6e93ba23a6dd2 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -26,12 +26,16 @@ public class EditorInfoCompatUtils {
             EditorInfo.class, "IME_FLAG_NAVIGATE_NEXT");
     private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
             EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
+    private static final Field FIELD_IME_FLAG_NO_FULLSCREEN = CompatUtils.getField(
+            EditorInfo.class, "IME_FLAG_NO_FULLSCREEN");
     private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
             EditorInfo.class, "IME_ACTION_PREVIOUS");
     private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
             .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
     private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
             .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_PREVIOUS);
+    private static final Integer OBJ_IME_FLAG_NO_FULLSCREEN = (Integer) CompatUtils
+            .getFieldValue(null, null, FIELD_IME_FLAG_NO_FULLSCREEN);
     private static final Integer OBJ_IME_ACTION_PREVIOUS = (Integer) CompatUtils
             .getFieldValue(null, null, FIELD_IME_ACTION_PREVIOUS);
 
@@ -47,6 +51,12 @@ public class EditorInfoCompatUtils {
         return (imeOptions & OBJ_IME_FLAG_NAVIGATE_PREVIOUS) != 0;
     }
 
+    public static boolean hasFlagNoFullscreen(int imeOptions) {
+        if (FIELD_IME_FLAG_NO_FULLSCREEN == null)
+            return false;
+        return (imeOptions & OBJ_IME_FLAG_NO_FULLSCREEN) != 0;
+    }
+
     public static void performEditorActionNext(InputConnection ic) {
         ic.performEditorAction(EditorInfo.IME_ACTION_NEXT);
     }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index ae32a3cadcf77973491b39f007f4dc2c56c4ce20..248f4ddf2cd94b9acbbb5f805684cf5befb83f0d 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -894,6 +894,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
 
     @Override
     public boolean onEvaluateFullscreenMode() {
+        final EditorInfo ei = getCurrentInputEditorInfo();
+        if (ei != null) {
+            final int imeOptions = ei.imeOptions;
+            if (EditorInfoCompatUtils.hasFlagNoFullscreen(imeOptions))
+                return false;
+            if ((imeOptions & EditorInfo.IME_FLAG_NO_EXTRACT_UI) != 0)
+                return false;
+        }
         final Resources res = mResources;
         DisplayMetrics dm = res.getDisplayMetrics();
         float displayHeight = dm.heightPixels;