一、改变回车按钮
在使用键盘输入的时候,有时我们可以看到回车键是“下一步”、“搜索”、“确认”等,那么这个效果要怎么做呢?其实很简单,我们只需要在EditText中设置imeOptions这个属性就行了,下面我们只用搜索举例,其他方式套路一样,自己改变下参数就行。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionSearch"
android:singleLine="true"/>
或者
//自己可以替换其他常量实现不同功能
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也可以。