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

今日需求,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

 兩個字符數組,分別將對應位置的原始字符轉換爲要求後的字符。字符串

相關文章
相關標籤/搜索