android:按下完成键时软键盘执行动作

Posted

技术标签:

【中文标题】android:按下完成键时软键盘执行动作【英文标题】:android: Softkeyboard perform action when Done key is pressed 【发布时间】:2011-11-26 21:29:51 【问题描述】:

我有一个 EditText。我希望在输入一些文本后,当用户按下软键盘的Done 键时,它应该直接执行一些搜索操作,这也是我在按钮单击事件中实现的。

【问题讨论】:

在此评论中更好地使用 Kotlin:***.com/a/48810268/1912924 【参考方案1】:

试试这个

editText.setOnEditorActionListener(new OnEditorActionListener()         
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
        if(actionId==EditorInfo.IME_ACTION_DONE)
            //do something
        
    return false;
    
);

【讨论】:

【参考方案2】:

试试这个

它适用于 DONERETURN

EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() 

                @Override
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) 
                    if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
                            || actionId == EditorInfo.IME_ACTION_DONE) 
                        // Do your action
                        return true;
                    
                    return false;
                
            );

【讨论】:

【参考方案3】:

您捕捉到KeyEvent,然后检查它的键码。 FLAG_EDITOR_ACTION 用于识别来自 IME 的输入键,其输入键已自动标记为“下一步”或“完成”

if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
    //your code here

查找文档here

第二种方法

myEditText.setOnEditorActionListener(new OnEditorActionListener() 
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) 
    int result = actionId & EditorInfo.IME_MASK_ACTION;
    switch(result) 
    case EditorInfo.IME_ACTION_DONE:
        // done stuff
        break;
    case EditorInfo.IME_ACTION_NEXT:
        // next stuff
        break;
    
 
);

【讨论】:

【参考方案4】:

试试这个

无论您的键盘是显示回车符号还是下一个箭头符号,这两种情况都适用

YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
    
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
        
            if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
            
                //Perform Action here 
            
            return false;
        
    );

如果你面对红线,那么就这样做...... 通过按 alt+enter 导入 Keyevent 和 EditorInfo 那么所有的错误都会正确删除.......

【讨论】:

【参考方案5】:

在 Kotlin 中使用

viewBinding.editText.setOnEditorActionListener  view, actionId, event ->
    if (actionId == EditorInfo.IME_ACTION_DONE) 
        //react to action
    
    false

您还可以在“if”大括号内返回 true 以使用事件 - 这样当您按下完成时键盘不会关闭

【讨论】:

以上是关于android:按下完成键时软键盘执行动作的主要内容,如果未能解决你的问题,请参考以下文章

Android N(7.0) 在ListView里显示EditText时软键盘弹出时会自动切换到全键盘的问题?

部分安卓手机上出现切换界面时软键盘无法收回的情况,请问该如何解决?

按下返回键时隐藏软键盘

对Android 软键盘向下的监听

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

input输入时软键盘回车显示搜索