EditText中有一个属性:imeOptions。它的参数常用的有如下几种:1.actionNext下一步,通常用于跳转到下一个EditText(回车键监听不到)

2.actionGo前往,通常用于打开链接

3.actionSend发送,通常用于发送信息

4.actionSearch搜索,通常用于搜索信息

5.actionDone确认,通常表示事情做完了(回车键监听不到)

例如:

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:imeOptions="actionSearch"

android:singleLine="true"/>

注意这里一定还要设置singLine=“true”,不然回车还是换行的功能。

设置完成以后,我们可以设置回车键的点击事件。editText.setOnKeyListener(new View.OnKeyListener() {

@Override

public boolean onKey(View v,int keyCode, KeyEvent event) {

if(keyCode == event.KEYCODE_ENTER) {

// TO DO

}

//我测试的为true的时候,这时候我的删除键不能正常使用,因此返回为false

return false;

}

});

到这里的时候,我又发现了一个问题,回车键的点击事件会执行两次。这是由于Key有Down和Up事件,即你按下和松开的时候都会触发事件,所以会执行两次。因此我们需要处理一下:// TODO

if(keyCode == KeyEvent.KEYCODE_ENTER&& event.getAction() == KeyEvent.ACTION_DOWN) {

InputMethodManager imm = (InputMethodManager) v.getContext()

.getSystemService(Context.INPUT_METHOD_SERVICE);

key = search_edit_text.getText().toString();

if(imm.isActive()) {

imm.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);

}

}

return false;

我们的处理是加上了判断当前是按下的操作,然后还添加了判断软键盘是不是显示状态,如果是就隐藏,即你点击回车键后就关闭软键盘。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐