diff --git a/java/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml
index b2c9f4a510d168bb5b6d9ab223cec666bce5b210..b00432f0c610c17cffe274b712dd3d1d4be63077 100644
--- a/java/res/layout/recognition_status.xml
+++ b/java/res/layout/recognition_status.xml
@@ -26,7 +26,7 @@
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/popup_layout"
             android:orientation="vertical"
-            android:layout_height="0dip"
+            android:layout_height="371dip"
             android:layout_width="500dip"
             android:layout_centerInParent="true"
             android:background="@drawable/vs_dialog_red">
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index ffce66e9b269b510f3316ad63bc7f8d35760bf69..d3aa70c283b4f6d1a610d290cb75557a53aafe8e 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -435,7 +435,7 @@ public class SubtypeSwitcher {
             mVoiceInput = vi;
             if (isVoiceMode()) {
                 if (DBG) {
-                    Log.d(TAG, "Set and call voice input.");
+                    Log.d(TAG, "Set and call voice input.: " + getInputLocaleStr());
                 }
                 triggerVoiceIME();
                 return true;
diff --git a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
index 6c9b7d527b54c568aeaad70b01a794b21c3baf5c..a3a3ea88eeb7c15232c656cee1dd4715aa30f3cd 100644
--- a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
+++ b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
@@ -78,6 +78,7 @@ public class VoiceIMEConnector implements VoiceInput.UiListener {
     // given text field. For instance this is specified by the search dialog when the
     // dialog is already showing a voice search button.
     private static final String IME_OPTION_NO_MICROPHONE = "nm";
+    private static final int RECOGNITIONVIEW_HEIGHT_THRESHOLD_RATIO = 6;
 
     @SuppressWarnings("unused")
     private static final String TAG = "VoiceIMEConnector";
@@ -543,10 +544,14 @@ public class VoiceIMEConnector implements VoiceInput.UiListener {
                 // As we add mm, we don't know how the rounding is going to work
                 // thus we may end up with few pixels extra (or less).
                 if (keyboardView != null) {
-                    int h = keyboardView.getHeight();
-                    if (h > 0) {
-                        View popupLayout = v.findViewById(R.id.popup_layout);
-                        popupLayout.getLayoutParams().height = h;
+                    View popupLayout = v.findViewById(R.id.popup_layout);
+                    final int displayHeight =
+                            mService.getResources().getDisplayMetrics().heightPixels;
+                    final int currentHeight = popupLayout.getLayoutParams().height;
+                    final int keyboardHeight = keyboardView.getHeight();
+                    if (keyboardHeight > currentHeight || keyboardHeight
+                            > (displayHeight / RECOGNITIONVIEW_HEIGHT_THRESHOLD_RATIO)) {
+                        popupLayout.getLayoutParams().height = keyboardHeight;
                     }
                 }
                 mService.setInputView(v);