EditText中有一个属性:imeOptions。它的参数常用的有如下几种:
1.actionNext下一步,通常用于跳转到下一个EditText(回车键监听不到)
2.actionGo前往,通常用于打开链接
3.actionSend发送,通常用于发送信息
4.actionSearch搜索,通常用于搜索信息
5.actionDone确认,通常表示事情做完了(回车键监听不到)
例如:
<EditText
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;
我们的处理是加上了判断当前是按下的操作,然后还添加了判断软键盘是不是显示状态,如果是就隐藏,即你点击回车键后就关闭软键盘。