需求为:
当用户在界面内点击输入框,弹出键盘,键盘右下角示意为“搜索”按钮
当用户输入内容后,点击搜索按钮将进行关键词搜索
当用户没有输入内容点击搜索按钮,将收起键盘,回到界面(这一步没验证)
1.改变显示(回车 -->搜索)
设置imeOptions属性为actionSearch,这样输入法的确认按钮则会变为搜索按钮
代码设置:
EditText editText = new EditText(this);
//在该Editview获得焦点的时候将“回车”键改为“搜索”
editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
editText.setInputType(EditorInfo.TYPE_CLASS_TEXT);
//不然回车【搜索】会换行
editText.setSingleLine(true);
xml配置文件:
EditText属性设置:
android:imeOptions="actionSearch"
android:inputType="text"
android:singleLine="true"
2.按键监听:点击搜索后事件处理
在activity代码中添加imeOptions的监听
这里有几种事件处理的方式,按需使用,试过第一种可以满足目前的需求
第一种:
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH) && keyEvent != null) {
//点击搜索要做的操作
search();
return true;
}
return false;
}
});
第二种:
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,KeyEvent event) {
if (actionId==EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER))
{
//点击搜索要做的操作
search(true);
return true;
}
return false;
}
});
第三种:
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// 先隐藏键盘
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(SearchUserActivity.this.getCurrentFocus()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//进行搜索操作的方法,在该方法中可以加入mEditSearchUser的非空判断
search();
}
return false;
}
});
搜索功能:
private void search() {
String searchContext = editText.getText().toString().trim();
if (TextUtils.isEmpty(searchContext)) {
TipTools.shortToast(this, "输入框为空,请输入");
} else {
// 调用搜索的API方法
...
}
}
参考:
Android EditText 软键盘上回车改为搜索
【Android基础】EditText键盘搜索事件设置和监听
Android edittext将软键盘的回车改为搜索