相信很多朋友都有過讓EditText具備有文字自動轉(zhuǎn)換的功能的需求评也,
例如:當用戶輸入“1”之后自動轉(zhuǎn)換為“一”或“壹”盗迟,當用戶輸入“a”之后自動轉(zhuǎn)換為“A”。其實做法很簡單熙含。下面就來看一下怎么做吧罚缕。
首先定義一個類繼承ReplacementTransformationMethod類并重寫兩個方法。這個類位于android.text.method包中怎静。
下面我就以自動將用戶輸入的小寫字母轉(zhuǎn)換為大寫為例定義一個ReplacementTransformationMethod類邮弹。
public class AutoCaseTransformationMethod extends ReplacementTransformationMethod {
/**
* 獲取原有的字符,就是用戶可能會輸入的而且你也希望改變的字符蚓聘。
* @return 將你希望被改變的字符數(shù)組返回腌乡。
*/
@Override
protected char[] getOriginal() {
return new char[]{'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 將你希望用來替換的字符數(shù)組返回夜牡。這里返回的字符數(shù)組中的順序
* 要和{@Link #getOriginal()}方法的返回值對應(yīng)起來与纽,如果{@Link #getOriginal()}方法
* 的返回值的第一個元素是a,而改方法返回值的第一個元素是B塘装,那么當用戶輸入a之后就會自動轉(zhuǎn)換為B急迂。
* 還要注意的是,改方法的返回值的數(shù)組長度要個{@Link #getOriginal()}方法的返回值的
* 數(shù)組長度保持一致蹦肴。
*/
@Override
protected char[] getReplacement() {
return new char[]{ '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' };
}
}
然后調(diào)用EditText的setTransformationMethod方法將我們的AutoCaseTransformationMethod對象作為參數(shù)傳遞進去就可以了袋毙。
editText.setTransformationMethod(new AutoCaseTransformationMethod());
下面看下效果吧。