diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 05ee493..e155d69 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -305,10 +305,11 @@
                   android:label="@string/phoneAppLabel"
                   android:excludeFromRecents="true"
                   android:launchMode="singleInstance"
-                  android:configChanges="keyboardHidden"
+                  android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
                   android:exported="false"
                   android:screenOrientation="nosensor"
-                  android:encryptionAware="true" >
+                  android:encryptionAware="true"
+                  android:resizeableActivity="true">
         </activity>
 
         <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 73155a4..9e35c3d 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -88,6 +88,12 @@
     private static final int DIALPAD_REQUEST_SHOW = 2;
     private static final int DIALPAD_REQUEST_HIDE = 3;
 
+    /**
+     * This is used to relaunch the activity if resizing beyond which it needs to load different
+     * layout file.
+     */
+    private static final int SCREEN_HEIGHT_RESIZE_THRESHOLD = 500;
+
     private CallButtonFragment mCallButtonFragment;
     private CallCardFragment mCallCardFragment;
     private AnswerFragment mAnswerFragment;
@@ -252,7 +258,7 @@
         // setting activity should be last thing in setup process
         InCallPresenter.getInstance().setActivity(this);
         enableInCallOrientationEventListener(getRequestedOrientation() ==
-               InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION);
+                InCallOrientationEventListener.FULL_SENSOR_SCREEN_ORIENTATION);
 
         InCallPresenter.getInstance().onActivityStarted();
     }
@@ -353,6 +359,27 @@
         }
     }
 
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        Configuration oldConfig = getResources().getConfiguration();
+        Log.v(this, String.format(
+                "incallui config changed, screen size: w%ddp x h%ddp old:w%ddp x h%ddp",
+                newConfig.screenWidthDp, newConfig.screenHeightDp,
+                oldConfig.screenWidthDp, oldConfig.screenHeightDp));
+        // Recreate this activity if height is changing beyond the threshold to load different
+        // layout file.
+        if (oldConfig.screenHeightDp < SCREEN_HEIGHT_RESIZE_THRESHOLD &&
+                newConfig.screenHeightDp > SCREEN_HEIGHT_RESIZE_THRESHOLD ||
+                oldConfig.screenHeightDp > SCREEN_HEIGHT_RESIZE_THRESHOLD &&
+                        newConfig.screenHeightDp < SCREEN_HEIGHT_RESIZE_THRESHOLD) {
+            Log.i(this, String.format(
+                    "Recreate activity due to resize beyond threshold: %d dp",
+                    SCREEN_HEIGHT_RESIZE_THRESHOLD));
+            recreate();
+        }
+    }
+
     /**
      * Returns true when the Activity is currently visible.
      */
