Android TextView的字符過濾功能
TextView可以設置接受各式各樣的字符,通過過濾指定的字符來滿足不同應用的輸入和顯示要求。
通過xml配置:
android:InputType
number 接受整數輸入
numberSigned 接受有符號整數輸入
numberDecimal 接受整數和小數的輸入
android:digits
指定接受固定的數字,如android:digits="012345",則隻接受0~5數字的輸入
android:numberic
integer 接受整數輸入
signed 接受有符號整數輸入
decimal 接受整數和小數輸入
通過java代碼設置
其實以上3個屬性,功能有點重複,最終都是通過java代碼來對TextView設置KeyListener
KeyListener是一個接口,提供了對輸入鍵盤按鍵的監聽
InputFilter是一個接口,提供了對字符的過濾
android提供了實現了KeyListener和InputFilter的NumberKeyListener,而DigitsKeyListener繼承了NumberKeyListener
- TextView tv = new TextView(context);
- //隻接受整數輸入
- KeyListener l = new DigitsKeyListener(fasle,false);
- //接受有符號整數輸入
- KeyListener l = new DigitsKeyListener(true,false);
- //接受小數,整數輸入
- KeyListener l = new DigitsKeyListener(false,true);
- //接受有符號整數/小數輸入
- KeyListener l = new DigitsKeyListener(true,true);
- tv.setKeyListener(l);
如果想要實現更大自由度的過濾定製,可以自己寫一個KeyListener(繼承BaseKeyListener)並實現InputFilter,重寫filter()函數,在filter()函數裏可以實現自由的過濾。
NumberKeyListener myKeyListener =
new NumberKeyListener() {
public int getInputType() {
//指定鍵盤類型
return InputType.TYPE_CLASS_TEXT;
}
protected char[] getAcceptedChars() {
//指定你所接受的字符
return "abcdefg".toCharArray();
}
};
EditText tv = (EditText)findViewById(R.id.testEdit);
tv.setKeyListener(myKeyListener);
你可以將字符串"abcdefg"換成任意的,你想讓你的EditText所接受的字符組合。
最後更新:2017-04-04 07:03:44