天天看點

Android項目實戰(五十二):控制EditText輸入内容大小寫轉換

今日需求,EditText内容為一串字元串,要求将使用者軟鍵盤輸入的小寫字母在輸入的時候自動轉為大寫字母,反之亦然。

效果如下:

Android項目實戰(五十二):控制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;
                }
            });      

 顯而易見,該方法是對編輯框内容進行轉換的操作。

 兩個字元數組,分别将對應位置的原始字元轉換為要求後的字元。

作者:聽着music睡

出處:http://www.cnblogs.com/xqxacm/

Android交流群:38197636

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。