EditText中imeOptions屬性使用及設定無效解決
阿新 • • 發佈:2019-02-07
雖然通常輸入法軟鍵盤右下角會是回車按鍵
但我們經常會看到點選不同的編輯框,輸入法軟鍵盤右下角會有不同的圖示
點選瀏覽器網址欄的時候,輸入法軟鍵盤右下角會變成“GO”或“前往”
而我們點選Google搜尋框,輸入法軟鍵盤右下角會變成 放大鏡 或者“搜尋”
而決定這個圖示的變換的引數就是EditText中的 android:imeOptions
android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等,這些意思都很明顯
<EditText android:id="@+id/editText" android:layout_width="200dp" android:layout_height="wrap_content" android:imeOptions="actionSearch" />
而其在Java程式碼中對應的值為EditorInfo.IME_ACTION_XXX
在程式碼中通過editText.setOnEditorActionListener方法新增相應的監聽,因為有些action是需要在程式碼中新增具體的相關操作的
EditText editText = (EditText) contentView.findViewById(R.id.editText); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { Toast.makeText(getActivity(), "1111111",Toast.LENGTH_SHORT).show(); } return false; } });
然而當我們設定這一切後,卻發現點選輸入框,輸入法鍵盤完全沒變化,還是回車鍵
這並不是上面的屬性和方法無效,而是我們還需要設定別的屬性來使它們生效
經過試驗 設定下面兩個屬性中的一個即可使這個屬性生效(應該還有其他的屬性也可以,沒去試驗)
1 將singleLine設定為true
2 將inputType設定為text
<EditText android:id="@+id/editText" android:layout_width="200dp" android:layout_height="wrap_content" android:imeOptions="actionSearch" android:singleLine="true" android:inputType="text" />
java程式碼設定
editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
editText.setInputType(EditorInfo.TYPE_CLASS_TEXT);
editText.setSingleLine(true);