您的位置:首页 > 其它

完美解决editText监听键盘回车会执行两次的解决方法

2015-04-27 16:59 162 查看
对于开发中有时可能会监听键盘的回车按键,但是在网上找了一种方法是

private OnKeyListener onKey = new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER) {
		login();
            }
            return false;
        }
    };
edtTxtPassword.setOnKeyListener(onKey);
会发现执行了两次,当然原因很简单,引文onkey事件包含了down和up事件,所以只需要加入一个判断即可。

具体代码如下:

private OnKeyListener onKey = new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER
                   <span style="color:#ff0000;"> && event.getAction() == KeyEvent.ACTION_UP</span>) {
                myLogin();
            }
            return false;
        }
    };


至此完美解决。当然还有一种监听setOnEditorActionListener也是同样的原理。

也可以修改editText的回车样式,即是把EditText的ImeOptions属性设置成不同的值,Enter键上就会显示不同的文字或图案

actionNone : 回车键,按下后光标到下一行

actionGo : Go,

actionSearch : 一个放大镜

actionSend : Send

actionNext : Next

actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐