Make the SearchDialog's AutoCompleteTextView dropdown respect the
IME again when the user presses right or left from a query-jammed suggestion to continue editing. Previously we required the user to press on the text field again in order to get the IME to show. We accomplish this by factoring out the code to 'ensureImeVisible' into a separate method and calling that from SearchDialog. Fixes http://b/1976338
This commit is contained in:
@@ -1042,6 +1042,8 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
|
||||
mSearchAutoComplete.setSelection(selPoint);
|
||||
mSearchAutoComplete.setListSelection(0);
|
||||
mSearchAutoComplete.clearListSelection();
|
||||
mSearchAutoComplete.ensureImeVisible();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -210,8 +210,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
|
||||
if (mDropDownAlwaysVisible
|
||||
&& mPopup.isShowing()
|
||||
&& mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED) {
|
||||
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
|
||||
showDropDown();
|
||||
ensureImeVisible();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1086,11 +1085,21 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
|
||||
/**
|
||||
* Issues a runnable to show the dropdown as soon as possible.
|
||||
*
|
||||
* @hide internal used only by Search Dialog
|
||||
* @hide internal used only by SearchDialog
|
||||
*/
|
||||
public void showDropDownAfterLayout() {
|
||||
post(mShowDropDownRunnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the drop down is not obscuring the IME.
|
||||
*
|
||||
* @hide internal used only here and SearchDialog
|
||||
*/
|
||||
public void ensureImeVisible() {
|
||||
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
|
||||
showDropDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Displays the drop down on screen.</p>
|
||||
|
||||
Reference in New Issue
Block a user