1. 程式人生 > >EditText禁止輸入換行符。

EditText禁止輸入換行符。

最近在做專案的時候,往後臺傳送資料時報錯了,後來發現是因為輸入的字元中有換行符導致的,於是就想辦法先設定singleLine="true",結果沒什麼作用,後來查閱edittext的原始碼,發現其中有一個方法setOnEditorActionListener,這個方法是給文字框新增編輯監聽事件,這個看起來沒什麼用處,但是這個方法有點特別,這個方法的監聽時間並不是點選EditText的時候觸發,也不是在我們對EditText進行編輯時觸發,而是在我們編輯完之後點選軟鍵盤上的回車鍵才會觸發。這個時候明白了吧。我們不是要回車鍵失效嗎?現在只需要當我們按回車鍵的時候返回false就行了,程式碼如下:
mEtRemark.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { return(event.getKeyCode() == KeyEvent.KEYCODE_ENTER); } });

在這裡不知道你們發現問題沒,我們的返回結果是true,那麼我們為什麼要返回true呢?

通過檢視原始碼發現,該方法預設返回的是false,那麼Google對該結果是如何規定的呢?在原始碼最後一行中顯示

Returns:Return true if your have consumed the action,else false.

這句話是什麼意思呢?

意思就是說如果你要消耗該點選事件的話就返回true,否則返回false。通俗意思就是說返回true代表你已經將該點選事件消化掉了,不會把點選事件產生的結果返回給edittext,而返回false就是代表你沒有消耗掉該點選事件,將返回結果傳給edittext,然後edittext就會換行了。這種型別的方法有很多,比如事件傳遞機制TouchEvent等方法。