diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 4a451509f5387..8493fb25b8a5f 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -47,8 +47,10 @@ import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.AutoCompleteTextView; +import android.widget.Filterable; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.ListPopupWindow; import android.widget.SearchView; import android.widget.TextView; @@ -370,7 +372,10 @@ public class SearchDialog extends Dialog { updateSearchAppIcon(); updateSearchBadge(); if (isLandscapeMode(getContext())) { - mSearchAutoComplete.ensureImeVisible(true); + mSearchAutoComplete.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); + if (mSearchAutoComplete.isDropDownAlwaysVisible() || enoughToFilter()) { + mSearchAutoComplete.showDropDown(); + } } } } @@ -381,6 +386,15 @@ public class SearchDialog extends Dialog { == Configuration.ORIENTATION_LANDSCAPE; } + private boolean enoughToFilter() { + Filterable filterableAdapter = (Filterable) mSearchAutoComplete.getAdapter(); + if (filterableAdapter == null || filterableAdapter.getFilter() == null) { + return false; + } + + return mSearchAutoComplete.enoughToFilter(); + } + /** * Update the UI according to the info in the current value of {@link #mSearchable}. */