diff --git a/java/res/layout/additional_subtype_dialog.xml b/java/res/layout/additional_subtype_dialog.xml
index b7804f5df0ddd8b384563fc71bf03d6f7cd2fe2b..2de7d07a865a7c4b1d1fc2ae8173b8ec035b0320 100644
--- a/java/res/layout/additional_subtype_dialog.xml
+++ b/java/res/layout/additional_subtype_dialog.xml
@@ -38,7 +38,6 @@
             android:text="@string/subtype_locale" />
         <Spinner
             android:id="@+id/subtype_locale_spinner"
-            android:spinnerMode="dialog"
             android:layout_width="0dp"
             android:layout_weight="70"
             android:layout_height="wrap_content"
@@ -47,7 +46,8 @@
             android:layout_marginTop="8dip"
             android:layout_gravity="fill_horizontal|center_vertical"
             android:gravity="start|left"
-            android:prompt="@string/subtype_locale" />
+            android:prompt="@string/subtype_locale"
+            style="@style/additionalSubtypeSpinnerStyle" />
         </LinearLayout>
     <LinearLayout
         android:orientation="horizontal"
@@ -63,7 +63,6 @@
             android:text="@string/keyboard_layout_set" />
         <Spinner
             android:id="@+id/keyboard_layout_set_spinner"
-            android:spinnerMode="dialog"
             android:layout_width="0dp"
             android:layout_weight="70"
             android:layout_height="wrap_content"
@@ -72,6 +71,7 @@
             android:layout_marginTop="8dip"
             android:layout_gravity="fill_horizontal|center_vertical"
             android:gravity="start|left"
-            android:prompt="@string/keyboard_layout_set" />
+            android:prompt="@string/keyboard_layout_set"
+            style="@style/additionalSubtypeSpinnerStyle" />
     </LinearLayout>
 </LinearLayout>
diff --git a/java/res/values-v19/spinner-style.xml b/java/res/values-v19/spinner-style.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7de59edf3a03529de4af7cb8d95a775c9245bd51
--- /dev/null
+++ b/java/res/values-v19/spinner-style.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Until KitKat (API 19), {@link android.widget.Spinner} of dialog mode in a Dialog can't
+         handle orientation change correctly. Using dropdown mode avoids the issue.
+         This file overrides values/spinner-style.xml on KitKat and newer device. -->
+    <style name="additionalSubtypeSpinnerStyle">
+        <item name="android:spinnerMode">dialog</item>
+    </style>
+</resources>
diff --git a/java/res/values/spinner-style.xml b/java/res/values/spinner-style.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6ad958d16f745f2251689f330dfc235e49f53234
--- /dev/null
+++ b/java/res/values/spinner-style.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Until KitKat (API 19), {@link android.widget.Spinner} of dialog mode in a Dialog can't
+         handle orientation change correctly. Using dropdown mode avoids the issue.
+         This file is overrode by values-v19/spinner-style.xml on KitKat and newer device. -->
+    <style name="additionalSubtypeSpinnerStyle">
+        <item name="android:spinnerMode">dropdown</item>
+    </style>
+</resources>