如何在软键盘打开android时捕获关键事件?

时间:2011-07-30 13:16:34

标签: java android events keyboard key

我知道如何通过覆盖

来捕获活动中的关键事件
public boolean onKeyDown(int keyCode, KeyEvent event)

问题是当软键盘打开时,这种方法甚至不被称为... 无论如何都能抓住这个事件?

1 个答案:

答案 0 :(得分:0)

是的,当我们谈论软键盘时,这意味着不那么容易使用它。顺便说一句,与软键盘相关的方法没有预期的结果。例如:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    //do something
    return super.onKeyDown(keyCode, event);
}

我发现的解决方法是使用TextWatcher。将此代码用于您的应用程序

YourEdit = (EditText) findViewById(R.id.YourEdit);         
YourEdit.addTextChangedListener(new TextWatcher()
{
        public void  afterTextChanged (Editable s)
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "afterTextChanged", 3).show();    
            //do something
        } 

        public void  beforeTextChanged  (CharSequence s, int start, int count, int after)
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "beforeTextChanged", 3).show();    
            //do something
        } 

        public void  onTextChanged  (CharSequence s, int start, int before, int count) 
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "onTextChanged", 3).show();    
            //do something
        }
});

这些方法按顺序调用:beforeTextChanged,onTextChanged和afterTextChanged。您可以捕捉任何文本更改阶段。 祝你好运!