我有一个自动补全文本视图,将其链接到Web服务,因此它会在我键入时显示建议。现在,当用户开始滚动自动完成下拉列表时,如何隐藏软键盘?我浏览了网络,但没有找到任何方法来检测自动完成下拉列表上的触摸。
我有一个自动补全文本视图,将其链接到Web服务,因此它会在我键入时显示建议。现在,当用户开始滚动自动完成下拉列表时,如何隐藏软键盘?我浏览了网络,但没有找到任何方法来检测自动完成下拉列表上的触摸。
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(viewResourceId, parent, false);
holder = new ViewHolder();
init(convertView, holder);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
convertView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
InputMethodManager imm = (InputMethodManager) getContext()
.getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
searchView.getWindowToken(), 0);
}
return false;
}
});
setView(position, holder);
return convertView;
}
我会采纳这个答案,或者采纳@ayorhan的答案,因为它确实是处理下拉选择滚动时隐藏键盘的最佳方式。
这是基于@ayorhan的解决方案的改编,适用于SimpleCursorAdapter。我不得不制作一个自定义SimpleCursorAdapter类:
public class SimpCursAdap extends SimpleCursorAdapter {
public SimpCursAdap(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
InputMethodManager imm = (InputMethodManager) getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
view.getApplicationWindowToken(), 0);
}
return false;
}
});
return view;
}
}
接下来你可以在任何地方实例化这个类:
final SimpleCursorAdapter adapter = new SimpCursAdap(aContext,
aRowLayout,
null,
aColNames,
aRowViewsIds,
0);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.setStringConversionColumn(aValueColId);
autocompletetextview.setAdapter(adapter);
在 XML 中添加这行代码对我来说很有效
这将使键盘出现在滚动列表的后面。
android:dropDownHeight="wrap_content"