我正在尝试开发小应用程序,其中我使用了AutoCompleteTextView并且我使用了
simpleCursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
// my stub here
}
由于我的过滤具体,我的Dropdown(Anchor)低于虚拟键盘。这意味着首先我搜索 DR。然后显示Dropdown(Anchor)中的15名医生名单,没有任何问题。但是当我键入 DR.Kum 时,现在Dropdown(Anchor)只有一个名称,因此Dropdown(Anchor)会降低虚拟键盘。当它有15个名字的列表时,它显示完美。如何显示Dropdown(Anchor)总是高于AutoCompleteTextView。??
答案 0 :(得分:1)
我通过一招来解决了这个问题
// 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);
}
答案 1 :(得分:1)
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
}
}
现在dropDown
将始终显示在上方。
原因是隐藏in this portion of the code负责计算顶部坐标。