1. 程式人生 > >解決Android EditText或者AppCompatEditText按軟鍵盤迴車只是換行的問題

解決Android EditText或者AppCompatEditText按軟鍵盤迴車只是換行的問題

Android中 使用EditText或者android.support.v7.widget.AppCompatEditText輸入時

預設的軟鍵盤的回車鍵只是用於換行

這會導致使用者誤按回車導致EditTex輸入區域變寬,UI變形的BUG情況,

度娘上的回答都是讓設定EditText的android:imeOptions 屬性改變"回車"鍵預設樣式

筆者按照這樣的思路設定後發現無法改變"回車"鍵預設樣式,也無法解決EditTex的“回車換行”bug,

然後在另一網頁偶然看到EditText常用的屬性中有一個

             android:singleLine="true"  

設定單行輸入

抱著如果真的可以設定僅單行輸入,或許這樣就不會自動換行的想法,就設定玩玩,沒想到

意外解決了EditTex的“回車換行”的情況,特此總結,填坑,希望遇到同樣坑的朋友都能看到這個文章。

 

EditTex預設軟鍵盤“回車換行”的解決方法

  1. 設定EditText的android:imeOptions 屬性改變"回車"鍵預設樣式   

  2. 設定EditText的android:singleLine="true" 屬性限定單行輸入

  3. 在activity中新增監聽(kotlin

):

editView_search.setOnEditorActionListener(
        TextView.OnEditorActionListener { v, actionId, event ->
            if (actionId== EditorInfo.IME_ACTION_SEARCH) {
                //EditorInfo.IME_ACTION_SEARCH要和EditText 的imeOptions屬性一樣
                
                 //TODO...
                 //處理業務邏輯
                
                
[email protected]
true//返回true,消費這個事件 } false } )

我的問題就這樣解決了

 

補充筆記:

EditText  imeOptions 屬性  (改變"回車"鍵預設樣式)

屬性值                           意義                   對應的程式碼常量

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常用的屬性:

android:password="true"  這條可以讓EditText顯示的內容自動為星號,輸入時內容會在1秒內變成*字樣。

android:numeric="true" 這條可以讓輸入法自動變為數字輸入鍵盤,同時僅允許0-9的數字輸入

android:capitalize="abcde" 這樣僅允許接受輸入abcde,一般用於密碼驗證

android:hint="密碼"  設定顯示的提示資訊

android:singleLine="true"  設定單行輸入,這樣就不會自動換行