解決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" 設定單行輸入,這樣就不會自動換行