Android入門教程 | EditText 使用者輸入
EditText 監聽回車
使用EditText時,有時候我們會需要監聽輸入的回車,以做出一些操作。 或者需要把回車變成“搜尋”,“傳送”或“完成”等等。
EditText 為我們提供了一個屬性 imeOptions 用來替換軟鍵盤中 enter 鍵的外觀,如actionGo 會使外觀變成“前往”。 需要同時設定
android:inputType="text"
。
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionGo" android:inputType="text" />
常用的幾個屬性以及替換的文字外觀:
屬性 | 說明 | 對應靜態變數 |
---|---|---|
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 |
設定的方法可以在佈局檔案中設定
android:imeOptions="actionNext"
或者在程式碼中
mUserEdit.setImeOptions(EditorInfo.IME_ACTION_NEXT);
接下來設定回車按鍵的監聽事件
setOnEditorActionListener
et1.setOnEditorActionListener(mOnEditorActionListener); // ...... private TextView.OnEditorActionListener mOnEditorActionListener = new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Log.d(TAG, "actionId: " + actionId); Log.d(TAG, "event: " + event); return false; } };
如果 onEditorAction 返回 true,表示消費調這個事件。
上面的 actionId 對應的是
android.view.inputmethod.EditorInfo
中的常量。
public static final int IME_ACTION_UNSPECIFIED = 0x00000000;public static final int IME_ACTION_NONE = 0x00000001;public static final int IME_ACTION_GO = 0x00000002;public static final int IME_ACTION_SEARCH = 0x00000003;public static final int IME_ACTION_SEND = 0x00000004;public static final int IME_ACTION_NEXT = 0x00000005;public static final int IME_ACTION_DONE = 0x00000006;public static final int IME_ACTION_PREVIOUS = 0x00000007;
EditText 游標移動與選擇
主要介紹 setSelection 方法。
setSelection 有:
- setSelection(int start, int stop) 選擇範圍
- setSelection(int index) 把游標移動到指定位置
例:假設有EditText,變數名為mEt1。
-
把游標移動到最前
mEt1.setSelection(0);
-
把游標移動到最後
mEt1.setSelection(mEt1.getText().length());
-
游標右移一位
mEt1.setSelection(mEt1.getSelectionEnd() + 1);
-
游標左移一位
mEt1.setSelection(mEt1.getSelectionEnd() - 1);
要注意的是,如果傳入的index超出了text的範圍,會報
java.lang.IndexOutOfBoundsException
因此在實際工程中,需要判斷傳入的位置是否在EditText已有內容的長度範圍內。 -
全選當前輸入的text
mEt1.setSelection(0, mEt1.getText().length());
監聽輸入內容
程式碼中動態限制輸入長度
使用TextWatcher
mQueryEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { // 如果EditText中的資料不為空,且長度大於指定的最大長度 if (!TextUtils.isEmpty(s) && s.length() > 15) { // 刪除指定長度之後的資料 s.delete(15, s.length() - 1); } } });
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008155/viewspace-2839262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android多個EditText輸入效果解決方案Android
- Android入門教程 | RecyclerView使用入門AndroidView
- Android入門教程 | Kotlin協程入門AndroidKotlin
- 【Android開發入門教程】三.Activity入門指南!Android
- 【Android開發入門教程】四.使用者介面之LayoutAndroid
- Android入門教程 | DialogFragment 的使用AndroidFragment
- Android入門教程 | SharedPreferences 簡介Android
- EditText中輸入資訊的限制的方法
- Android入門教程 | Fragment (載入方法與通訊)AndroidFragment
- SparkStreaming入門教程(三)高階輸入源:Flume、KaSpark
- app直播原始碼,監聽EditText輸入框內輸入內容的變化APP原始碼
- Android入門教程 | 多執行緒Android執行緒
- Android入門教程 | Fragment 基礎概念AndroidFragment
- Android入門教程 | DrawerLayout 側滑欄Android
- Android入門教程 | RecyclerView實際使用AndroidView
- Android入門教程 | AsyncTask 使用介紹Android
- Adroid edittext 輸入小數時只能輸入到小數點後的固定位數
- Android EditText輸入框實現下拉且儲存最近5個歷史記錄Android
- Android入門教程 | Button,TextView背景設定AndroidTextView
- Android入門教程 | 廣播機制 BroadcastAndroidAST
- Android入門教程:ConstraintLayout約束佈局AndroidAI
- Android OkHttp原始碼解析入門教程(一)AndroidHTTP原始碼
- Android OkHttp原始碼解析入門教程(二)AndroidHTTP原始碼
- 影片直播系統原始碼,EditText輸入框的使用原始碼
- 短視訊直播原始碼,EditText輸入框的使用原始碼
- 五筆輸入法入門
- Android Studio 從入門到精通視訊教程Android
- CAD中怎麼輸入文字?CAD製圖初學入門教程
- Android Bluetooth 入門Android
- Nucleo入門--004通用輸入輸出
- 新手入門,webpack入門詳細教程Web
- 影片直播app原始碼,自定義View 線型EditText輸入框APP原始碼View
- Android輸入事件詳解Android事件
- Android 小白菜鳥從入門到精通教程Android
- Android入門教程 | RecyclerView響應子項點選AndroidView
- Android入門教程之Activity(生命週期,啟動...)Android
- Android入門教程 | Handler,Looper與MessageQueue使用與分析AndroidOOP
- Android入門教程 | mmap 檔案對映介紹Android