今日需求,EditText內容爲一串字符串,要求將用戶軟鍵盤輸入的小寫字母在輸入的時候自動轉爲大寫字母,反之亦然。數組
效果以下:ide
第一次作該需求,原先想法:spa
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回調方法裏,對輸入的字符串進行大小寫轉換,結果失敗,由於每次轉換以後實際就再次回調該方法致使死循環。code
最後解決辦法:orm
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; } });
顯而易見,該方法是對編輯框內容進行轉換的操做。blog
兩個字符數組,分別將對應位置的原始字符轉換爲要求後的字符。字符串