开发中会遇到这样的业务要求:点击搜索框输入内容时,键盘的回车键应该是搜索。然后点击键盘的搜索时执行搜索操作。这是怎么实现的呢?
首先要明确在Android里面可以通过setOnEditorActionListener监听回车达到屏蔽回车按键的目的。它在API的TextView(EditText的父类),谷歌大意这样描述它:它是一个特殊的监听器,用于监听一个Enter键,如果设备具有物理键盘,点击Enter建不会插入回车符,不过按着alt键可以修复。
1:布局中
在EditText 中加入以下两句就可实现键盘回车键的修改。
android:imeOptions="actionSearch"
android:singleLine="true"
其中Android:imeOptions 有多种属性:
1:默认情况下软键盘右下角的按钮为“下一个”,点击会到下一个输入框
2:设置 android:imeOptions=”actionDone” ,软键盘下方变成“完成”
3:android:imeOptions=”actionSend” 软键盘下方变成“发送”,点击后光标移动下一个
2:监听键盘回车键
EditText实现setOnEditorActionListener,在onEditAction方法中actionId就对应我们设置的imeOptions。系统默认的actionId有:EditorInfo.IME_NULL、EditorInfo.IME_ACTION_SEND、EditorInfo.IME_ACTION_DONE等。
private TextView.OnEditorActionListener EnterListenter = new TextView.OnEditorActionListener() {
/**
* 参数说明
* @param v 被监听的对象
* @param actionId 动作标识符,如果值等于EditorInfo.IME_NULL,则回车键被按下。
* @param event 如果由输入键触发,这是事件;否则,这是空的(比如非输入键触发是空的)。
* @return 返回你的动作
*/
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
Log.i("---","搜索操作执行");
}
return false;
}
};