一般情况下我们的输入框都需要一些这样的需求:
1、EditText上输入以后,回车---》隐藏软键盘;
2、回车---》发送EditText上的消息;
3、回车---》,后光标到下一个光标;
幸运的是EditText给我们预留了一个回调接口:setOnEditorActionListener<pre name="code" class="java">EditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
//要做的事
}
return false;
}
});
<pre name="code" class="java">EditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
//要做的事
}
return false;
}
});
1、设置EditText的Ime Options属性。
actionNone : 回车键,按下后光标到下一行
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框
actionSearch : search 搜索
注意一定要设置android:singleLine="true",否则回车会换行
actionNone : 回车键,按下后光标到下一行
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框
actionSearch : search 搜索
注意一定要设置android:singleLine="true",否则回车会换行
<EditText
---
android:imeOptions="actionSearch"
android:singleLine="true" >
</EditText>
2、监听
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
//当actionId == XX_SEND 或者 XX_DONE时都触发
//或者event.getKeyCode == ENTER 且 event.getAction == ACTION_DOWN时也触发
//注意,这是一定要判断event != null。因为在某些输入法上会返回null。
if (actionId == EditorInfo.IME_ACTION_SEND
|| actionId == EditorInfo.IME_ACTION_DONE
|| (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())) {
//处理事件
}
return false;
}
});