Android 始终在文本字段上方显示AutoCompleteTextView弹出窗口
我正在尝试开发一个小应用程序,其中我使用了AutoCompleteTextView,我使用了Android 始终在文本字段上方显示AutoCompleteTextView弹出窗口,android,autocompletetextview,Android,Autocompletetextview,我正在尝试开发一个小应用程序,其中我使用了AutoCompleteTextView,我使用了 simpleCursorAdapter.setFilterQueryProvider(new FilterQueryProvider() { // my stub here } 当我的过滤变得特定时,我的下拉列表(锚定)就会在虚拟键盘的下方。这意味着我首先搜索的是 DR.然后在下拉列表(锚定)中显示15名医生的名单,
simpleCursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
// my stub here
}
当我的过滤变得特定时,我的下拉列表(锚定)就会在虚拟键盘的下方。这意味着我首先搜索的是
DR.然后在下拉列表(锚定)中显示15名医生的名单,没有任何问题。但当我键入DR.Kum时,现在Dropdown(Anchor)只有一个名称,这样Dropdown(Anchor)就会进入虚拟键盘。当它有15个列表名称时,它会完美地显示。如何始终在AutoCompleteTextView的上方显示下拉列表(锚定)。?我用一个技巧解决了这个问题
// It will capture number item in your DropDown . If number of item in drop is 2
// or 1 , then hide keyboard.
if(cur_hide_keyboard.getCount() ==2 || cur_hide_keyboard.getCount() ==1){
hideKeyBoard();
}
private void hideKeyBoard() {
InputMethodManager imm = (InputMethodManager) activity
.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(doctorsName.getWindowToken(), 0);
}
AutoCompleteTextView
getWindowVisibleDisplayFrame
方法,例如:
class AutoCompleteTextViewImpl extends android.support.v7.widget.AppCompatAutoCompleteTextView {
private boolean mShowDropDownAlwaysAbove;
public AutoCompleteTextViewImpl(Context context) {
super(context);
}
public void setShowDropDownAlwaysAbove(boolean showAbove) {
mShowDropDownAlwaysAbove = showAbove;
}
@Override
public void getWindowVisibleDisplayFrame(Rect outRect) {
super.getWindowVisibleDisplayFrame(outRect);
if (mShowDropDownAlwaysAbove)
outRect.bottom = -3000; // hack for https://github.com/AndroidSDKSources/android-sdk-sources-for-api-level-23/blob/master/android/widget/PopupWindow.java#L1449
}
}
下拉列表将始终显示在上面。
原因隐藏在计算顶部坐标的过程中。我也在努力解决同样的问题……有人知道吗