Android 修改软键盘上的回车键功能,用改变成搜索按钮举例

一、改变回车按钮

在使用键盘输入的时候,有时我们可以看到回车键是“下一步”、“搜索”、“确认”等,那么这个效果要怎么做呢?其实很简单,我们只需要在EditText中设置imeOptions这个属性就行了,下面我们只用搜索举例,其他方式套路一样,自己改变下参数就行

  

或者

//自己可以替换其他常量实现不同功能
editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
editText.setSingleLine();

二、常见属性

属性 常量 描述
actionNext EditorInfo.IME_ACTION_NEXT 下一步,用于跳转到下一个EditText
actionGo EditorInfo.IME_ACTION_GO 前往,用于打开链接。
actionSend EditorInfo.IME_ACTION_SEND 发送,用于发送信息
actionSearch EditorInfo.IME_ACTION_SEARCH 搜索,用于搜索信息
actionDone EditorInfo.IME_ACTION_DONE 确认,表示完成
actionUnspecified EditorInfo.IME_ACTION_UNSPECIFIED 未指定
actionNone EditorInfo.IME_ACTION_NONE 没有动作

三、监听回车键的事件

方法一:
 editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                //是否是回车键  
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                     // 自己处理业务逻辑
                }
                return false; //返回true,保留软键盘。false,隐藏软键盘
            }
        });
方法二:
editText.setOnKeyListener(new View.OnKeyListener() {  
    @Override  
    public boolean onKey(View v, int keyCode, KeyEvent event) {  
        //是否是回车键  
        if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
                  //隐藏软键盘  
                  ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
                            .hideSoftInputFromWindow(getCurrentFocus()
                                    .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                 
                   // 自己处理业务逻辑

         }
        return false;  
    }  
});  
补充部分

点击时执行两次监听事件的问题:
默认onkey事件包含了down和up事件,所以会出现执行两次的情况,上加event.getAction() == KeyEvent.ACTION_DOWN判断就行了,当然判断up也可以。

你可能感兴趣的:(Android 修改软键盘上的回车键功能,用改变成搜索按钮举例)