Android: catching action for keyboard enter button being pressed

孤者浪人 提交于 2019-12-06 01:27:38

问题


I am trying to respond to pressing the enter button on a standard system on screen soft keybord, in numeric mode. keyboard appears on the screen when myCustomEditText class is given focus.

tried 2 approaches:

  1. overriding onKeyDown():


    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_ENTER) {
            //do sth..
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

  1. setting listener setOnKeyListener:

    myCustomEditText.setOnKeyListener(new OnKeyListener() {

        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER) {
                onRightButtonClicked();
                return true;
            }
            return false;
        }
    });

(also tried onKeyDown() in myCustomEditText as well, but with no effect)

problem is: these aproaches above works for all the keys being pressed but for the enter key - the methods are not even being fired at all. (it's not a problem of bad KeyEvent.KEYCODE_...)

my question is: why these methods are not being fired for enter key, but are for other keys, and how to listen to enter key being pressed properly?


回答1:


You respond to ENTER differently than normal keys, try something like this:

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        switch (actionId) {

            case EditorInfo.IME_ACTION_DONE:
                ...
                return true;

            default:
                return false;
        }
    }
});

You can specify which action is performed by ENTER by specifiying android:imeOptions in XML or by calling editText.setImeOptions(...) with one of the constants in EditorInfo. imeOptions also changes how the ENTER key looks! For example if you set imeOptions to actionSearch then the ENTER key will look like a search button.

You can find a list of all possible values for imeOptions along with a description here.



来源:https://stackoverflow.com/questions/25136156/android-catching-action-for-keyboard-enter-button-being-pressed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!