Android:按下键盘输入按钮的捕捉动作

Sam*_*icz 7 keyboard android android-edittext

我试图在屏幕软键盘上以数字模式按下标准系统上的输入按钮.当myCustomEditText类获得焦点时,屏幕上会出现键盘.

试过两种方法:

  1. 压倒一切onKeyDown():


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

  1. 设置监听器setOnKeyListener:

    myCustomEditText.setOnKeyListener(new OnKeyListener() {

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

(也在onKeyDown()myCustomEditText中尝试过,但没有效果)

问题是: 上面的这些方法适用于所有按下的键,但对于输入键 - 方法甚至根本不被触发.(这不是坏事KeyEvent.KEYCODE_...)

我的问题是: 为什么这些方法不是为输入键而被触发,而是用于其他键,以及如何正确地按下输入键?

Xav*_*ler 6

您的响应与ENTER普通键不同,请尝试以下方法:

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;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

您可以ENTER通过android:imeOptions在XML中指定或editText.setImeOptions(...)使用其中一个常量调用来指定执行哪个操作EditorInfo.imeOptions也改变了ENTER键的外观!例如,如果设置imeOptionsactionSearch那么ENTER键将看起来像搜索按钮.

您可以在此处找到所有可能值的列表imeOptions以及说明.