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

Posted

技术标签:

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

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

尝试了 2 种方法:

    覆盖onKeyDown():
public boolean onKeyDown(int keyCode, KeyEvent event) if (keyCode == KeyEvent.KEYCODE_ENTER) //做某事.. 返回真; return super.onKeyDown(keyCode, event);
    设置监听器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_...

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

【问题讨论】:

【参考方案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

以上是关于Android:捕捉按下键盘输入按钮的动作的主要内容,如果未能解决你的问题,请参考以下文章

按下回车键隐藏 android 键盘

Pygame 捕捉 Enter 按钮

Android:如何让键盘输入按钮说“搜索”并处理它的点击?

即使使用输入管理器也无法隐藏 Android 软键盘

如何在 qml 中捕捉从虚拟键盘按下的 Key_Cancel?

android 键盘按键监听