【问题标题】:Android: catching action for keyboard enter button being pressedAndroid:捕捉按下键盘输入按钮的动作
【发布时间】:2014-09-27 23:00:03
【问题描述】:

我正在尝试在数字模式下响应按屏幕软键盘标准系统上的 Enter 按钮。当 myCustomEditText 类获得焦点时,键盘会出现在屏幕上。

尝试了 2 种方法:

  1. 覆盖onKeyDown():
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { //做某事.. 返回真; } 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(); 返回真; } 返回假; } });

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

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

我的问题是: 为什么这些方法不是针对回车键触发的,而是针对其他键触发的,以及如何监听正确按下的回车键?

【问题讨论】:

    标签: android keyboard android-edittext


    【解决方案1】:

    您对 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;
            }
        }
    });
    

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

    您可以找到imeOptions 的所有可能值的列表以及here 的描述。

    【讨论】:

    • 你知道如何在 EditText 类对象上设置 TextView.OnEditorActionListener() 吗?我收到“setOnEditorActionListener is undefined for myCustomEditText”错误
    • 好吧,如果你得到这个错误,那么你没有使用EditText。你首先想做什么?
    • 没关系,它也应该在 EditText 上工作,但我试图将侦听器设置为其他 ;) 谢谢!
    • 很高兴能帮上忙!
    • 我也必须回复 IME_NULL
    猜你喜欢
    • 2013-05-15
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多