首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在SearchView中自动显示键盘

无法在SearchView中自动显示键盘
EN

Stack Overflow用户
提问于 2012-08-19 06:31:35
回答 6查看 22.7K关注 0票数 28

SearchView在默认情况下是聚焦的,但当我尝试显示软件键盘时-它不会发生:

代码语言:javascript
复制
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

但是当我点击SearchView的时候,它就开始了。为什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-20 09:16:10

修复了!

代码语言:javascript
复制
mSearchView.setOnQueryTextFocusChangeListener(new OnFocusChangeListener() {
                        @Override
                        public void onFocusChange(View view, boolean hasFocus) {
                            if (hasFocus) {
                                showInputMethod(view.findFocus());
                            }
                        }
                    });

代码语言:javascript
复制
private void showInputMethod(View view) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
          imm.showSoftInput(view, 0);
        }
    }
票数 43
EN

Stack Overflow用户

发布于 2015-05-23 00:14:22

我遇到了这个问题,SearchView仍然不能打开键盘,并能够通过添加200ms的延迟来实现:

代码语言:javascript
复制
   mSearchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(final View view, boolean hasFocus) {
            if (hasFocus) {
                view.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(view.findFocus(), 0);
                    }
                }, 200);
            }
        }
    });
票数 12
EN

Stack Overflow用户

发布于 2012-08-19 08:02:22

使用setOnFocusChangeListener怎么样?

代码语言:javascript
复制
searchview.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus){
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
        }
    }
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12022715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档