解決android:imeOptions="actionDone"在中文輸入法時無回應的問題
若有開發android app的愛好者們,應該會很常用到EditText這一個widget
其中有個屬性為android:imeOptions,主要用於當使用者輸入完成後,按下某一個按鍵後,觸發OnEditorActionListener事件來處理一些東西。
例如設定android:imeOptions="actionDone",代表按下"done"或"enter"按鍵時,會觸發。
然而就在一切都很美好的狀況下,這玩意兒在中文輸入法時(以htc的手機為例),按下"enter"鍵都無回應。看來在中文輸入法的"enter"鍵沒有對應到actionDone。
那該怎麼解決呢?
分為兩部分,一部分是xml的描述,一部分是程式碼
在layout xml描述部分,將android:imeOptions設定為"actionDone|actionUnspecified"
程式碼部分,在OnEditorActionListener實現下列判斷式
private OnEditorActionListener mInputOnEditorActionListener = new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; // 若是按下Done or Enter都可輸入 if (actionId == EditorInfo.IME_ACTION_DONE || (actionId == EditorInfo.IME_ACTION_UNSPECIFIED && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { // 流程處理 handled = true; } /* end of if */ return handled; } };












