android - 在 Android 的 autocompletetextview 下拉菜单中滚动时关闭键盘

标签 android drop-down-menu autocomplete keyboard hide

我有一个自动完成 TextView ,我已将其链接到网络服务,因此它会在我键入时显示建议。现在,当用户开始滚动自动完成下拉菜单时,如何隐藏软键盘?我浏览了网络,但没有找到任何方法来取消对自动完成下拉菜单的触摸。

最佳答案

我能想到的最佳解决方案是在用户开始滚动列表时隐藏键盘并再次显示键盘(如果用户再次触摸 TextView )。这几乎适用于大多数操作系统版本和设备,这与您可能看到的其他解决方案不同,例如设置 dropDownHeight 的高度。

下面是一个示例代码,用于在用户开始滚动时隐藏键盘。基本上,您需要在 AutoCompleteTextView 的适配器中创建一个触摸监听器。

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;
}

关于android - 在 Android 的 autocompletetextview 下拉菜单中滚动时关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493017/

相关文章:

javascript - 如果找不到匹配项,Jquery 自动完成清除文本框

android - 在 Android 应用程序中使用 Facebook 登录

drop-down-menu - 从第一个下拉列表的值获取第二个下拉列表

java - 创建 fragment 会导致应用程序崩溃

php - 在动态 html+php 表中显示选择选项列表(下拉列表)

html - 如何从下拉列表(选择元素)中删除默认箭头图标?

jquery - 使用 django-autocomplete-light 自动完成

autocomplete - Sublime Text 2 自动完成快捷方式不起作用

android - 如何继承MonkeyDevice?

android - 构建本地.mk : No such file or directory