当前位置:  开发笔记 > 前端 > 正文

android设置隐藏键盘按下输入(在EditText中)

如何解决《android设置隐藏键盘按下输入(在EditText中)》经验,为你挑选了3个好方法。

当我的用户按下Enter虚拟机器人"用户验证条目!"时 键盘我的键盘保持可见!(为什么?)

这是我的Java代码......

private void initTextField() {
    entryUser = (EditText) findViewById(R.id.studentEntrySalary);
    entryUser.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                switch (keyCode) {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                        userValidateEntry();
                        return true;
                }
            }

          return true;
        }
    });
}

private void userValidateEntry() {
    System.out.println("user validate entry!");
}

......在这里我的观点

 
            
 

我的虚拟设备上可能有问题?



1> jqpubliq..:

这应该这样做:

yourEditTextHere.setOnEditorActionListener(new OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId,
                KeyEvent event) {
            if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                // NOTE: In the author's example, he uses an identifier
                // called searchBar. If setting this code on your EditText
                // then use v.getWindowToken() as a reference to your 
                // EditText is passed into this callback as a TextView

                in.hideSoftInputFromWindow(searchBar
                        .getApplicationWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
               userValidateEntry();
               // Must return true here to consume event
               return true;

            }
            return false;
        }
    });


对于其他看到Samir评论的人来说,这是因为这个代码设置了`OnEditorActionListener`,它只在按下Enter键之类的时候调用,而不是常规字符键.
你的属!谢谢(更改searchBar购买你的编辑文本)

2> 小智..:

保持singleLine ="true"并将imeOptions ="actionDone"添加到EditText.然后在OnEditorActionListener中检查actionId == EditorInfo.IME_ACTION_DONE,如此(但将其更改为您的实现):

if (actionId == EditorInfo.IME_ACTION_DONE) {

                if ((username.getText().toString().length() > 0)
                        && (password.getText().toString().length() > 0)) {
                    // Perform action on key press
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(username.getWindowToken(),
                            0);
                    doLogin();
                }
            }


在我的例子中,`imeOptions ="actionDone"`就足够了,不需要代码.

3> Hans..:

如果您将文本框设置为单行(我相信在布局xml文件中将其称为SingleLine),它将在输入时退出键盘.

你去了:http://developer.android.com/reference/android/R.styleable.html#TextView_singleLine


负.它仍然是android的同一个问题:singleLine ="true"
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有