今日需求,EditText內容為一串字元串,要求將用戶軟鍵盤輸入的小寫字母在輸入的時候自動轉為大寫字母,反之亦然。 效果如下: 第一次做該需求,原先想法: 對於afterTextChanged回調方法里,對輸入的字元串進行大小寫轉換,結果失敗,因為每次轉換之後實際就再次回調該方法導致死迴圈。 最後解 ...
今日需求,EditText內容為一串字元串,要求將用戶軟鍵盤輸入的小寫字母在輸入的時候自動轉為大寫字母,反之亦然。
效果如下:
第一次做該需求,原先想法:
EditText.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) { // 對輸入後的內容進行二次處理 } });
對於afterTextChanged回調方法里,對輸入的字元串進行大小寫轉換,結果失敗,因為每次轉換之後實際就再次回調該方法導致死迴圈。
最後解決辦法:
EditText.setTransformationMethod(new ReplacementTransformationMethod() { @Override protected char[] getOriginal() { char[] originalCharArr = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' }; return originalCharArr; } @Override protected char[] getReplacement() { char[] replacementCharArr = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' }; return replacementCharArr; } });
顯而易見,該方法是對編輯框內容進行轉換的操作。
兩個字元數組,分別將對應位置的原始字元轉換為要求後的字元。