1. 程式人生 > >EditText中imeOptions屬性使用及設定無效解決

EditText中imeOptions屬性使用及設定無效解決

雖然通常輸入法軟鍵盤右下角會是回車按鍵

但我們經常會看到點選不同的編輯框,輸入法軟鍵盤右下角會有不同的圖示

點選瀏覽器網址欄的時候,輸入法軟鍵盤右下角會變成“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);