首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >按下按钮后关闭虚拟键盘

按下按钮后关闭虚拟键盘
EN

Stack Overflow用户
提问于 2010-08-04 03:22:24
回答 11查看 140.2K关注 0票数 138

我的Activity有一个EditText,一个按钮和一个ListView。其目的是在EditText中键入搜索屏幕,按下按钮,让搜索结果填充此列表。

这一切都很完美,但虚拟键盘的行为却很奇怪。

如果我点击EditText,我就会看到虚拟键盘。如果我点击虚拟键盘上的“完成”按钮,它就会消失。但是,如果我在点击虚拟键盘上的“完成”之前点击我的搜索按钮,虚拟键盘仍然存在,我无法摆脱它。单击“完成”按钮不会关闭键盘。它会将“完成”按钮从“完成”更改为一个箭头,并保持可见。

谢谢你的帮忙

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-09-17 23:47:35

代码语言:javascript
复制
mMyTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            // hide virtual keyboard
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(m_txtSearchText.getWindowToken(), 
                                      InputMethodManager.RESULT_UNCHANGED_SHOWN);
            return true;
        }
        return false;
    }
});
票数 60
EN

Stack Overflow用户

发布于 2011-11-22 03:34:59

代码语言:javascript
复制
InputMethodManager inputManager = (InputMethodManager)
                                  getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                     InputMethodManager.HIDE_NOT_ALWAYS);

我把这个放在onClick(View v)事件之后。

需要导入android.view.inputmethod.InputMethodManager

单击该按钮时,键盘将隐藏。

票数 311
EN

Stack Overflow用户

发布于 2010-08-04 04:45:03

您应该为EditView实现OnEditorActionListener

代码语言:javascript
复制
public void performClickOnDone(EditView editView, final View button){
    textView.setOnEditorActionListener(new OnEditorActionListener() {

        @Override
        public boolean onEditorAction(EditView v, int actionId, KeyEvent event) {
            hideKeyboard();
            button.requestFocus();
            button.performClick();
            return true;
        }
    });

你可以通过以下方式隐藏键盘:

代码语言:javascript
复制
public void hideKeybord(View view) {
    inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(),
                                  InputMethodManager.RESULT_UNCHANGED_SHOWN);
}

您还应该使用onClickListener触发隐藏在按钮中的键盘

现在点击虚拟键盘和按钮上的‘完成’也会做同样的事情-隐藏键盘并执行点击操作。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3400028

复制
相关文章

相似问题

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