如果布局中包含多個EditText,可以為每個EditText控件設置android:singleLine=”true”,彈出的軟盤輸入法中回車鍵為next,直到最后一個獲取焦點后顯示為Done。點擊Done后,隱藏軟鍵輸入盤。將EditText的imeOptions屬性設置android:imeOptions=”actionDone”,則不管是不是最后一個EditText,點擊回車鍵即隱藏輸入法。
監聽Enter的事件,編寫Enter的事件響應。設置文本框的OnKeyListener,當keyCode ==KeyEvent.KEYCODE_ENTER的時候,表明Enter鍵被按下,就可以編寫自己事件響應功能了。
XML文件如下:
<EditText android:id="@+id/editTextId" android:layout_width="fill_parent" android:layout_height="50dp" android:imeOptions="actionDone" android:hint="@string/task_new_one" android:textSize="15sp" android:singleLine="true" android:paddingLeft="5dp" android:layout_gravity="center" android:background="@drawable/rectangle" android:inputType="text" > </EditText>
把EditText的Ime Options屬性設置成不同的值,Enter鍵上可以顯示不同的文字或圖案。
actionNone : 回車鍵,按下后光標到下一行
actionGo : Go,
actionSearch : 一個放大鏡
actionSend : Send
actionNext : Next
actionDone : Done,隱藏軟鍵盤,即使不是最后一個文本輸入框
- actionUnspecified 未指定,對應常量EditorInfo.IME_ACTION_UNSPECIFIED.效果:
- actionNone 沒有動作,對應常量EditorInfo.IME_ACTION_NONE 效果:
- actionGo 去往,對應常量EditorInfo.IME_ACTION_GO 效果:
- actionSearch 搜索,對應常量EditorInfo.IME_ACTION_SEARCH 效果:
- actionSend 發送,對應常量EditorInfo.IME_ACTION_SEND 效果:
- actionNext 下一個,對應常量EditorInfo.IME_ACTION_NEXT 效果:
- actionDone 完成,對應常量EditorInfo.IME_ACTION_DONE 效果:
EditText inputText = (EditText) findViewById(R.id. editTextId); inputText.setImeOptions(EditorInfo.IME_ACTION_DONE);
private final EditText.OnEditorActionListener editorActionListener = new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) { //業務代碼 haoMent.createTest(Test.getId(), v.getText().toString()); UiUtils.hideSoftKeyboard(getApplicationContext(), haoTest.this); v.setText(""); v.clearFocus(); handler.post(updateView); } return true; } };
inputKey = (EditText) findViewById(R.id.contactSearch_editText);
inputKey.addTextChangedListener(watcher);
inputKey.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_ENTER == keyCode && event.getAction() == KeyEvent.ACTION_DOWN) {
handler.post(updateView);
return true;
}
return false;
}
});
//響應鍵盤內容
public TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2,int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
handler.post(updateView);
}
};
android:inputType="none"--輸入普通字符 android:inputType="text"--輸入普通字符 android:inputType="textCapCharacters"--輸入普通字符 android:inputType="textCapWords"--單詞首字母大小 android:inputType="textCapSentences"--僅第一個字母大小 android:inputType="textAutoCorrect"--前兩個自動完成 android:inputType="textAutoComplete"--前兩個自動完成 android:inputType="textMultiLine"--多行輸入 android:inputType="textImeMultiLine"--輸入法多行(不一定支持) android:inputType="textNoSuggestions"--不提示 android:inputType="textUri"--URI格式 android:inputType="textEmailAddress"--電子郵件地址格式 android:inputType="textEmailSubject"--郵件主題格式 android:inputType="textShortMessage"--短消息格式 android:inputType="textLongMessage"--長消息格式 android:inputType="textPersonName"--人名格式 android:inputType="textPostalAddress"--郵政格式 android:inputType="textPassword"--密碼格式 android:inputType="textVisiblePassword"--密碼可見格式 android:inputType="textWebEditText"--作為網頁表單的文本格式 android:inputType="textFilter"--文本篩選格式 android:inputType="textPhonetic"--拼音輸入格式 android:inputType="number"--數字格式 android:inputType="numberSigned"--有符號數字格式 android:inputType="numberDecimal"--可以帶小數點的浮點格式 android:inputType="phone"--撥號鍵盤 android:inputType="datetime" android:inputType="date"--日期鍵盤 android:inputType="time"--時間鍵盤