28、editText只输入英文字母和'-',用于授权码输入

 1 InputFilter filter = new InputFilter() {

 2 

 3             @Override

 4             public CharSequence filter(CharSequence source, int start, int end,

 5                     Spanned dest, int dstart, int dend) {

 6                 // TODO Auto-generated method stub

 7                 for (int i = start; i < end; i++) 

 8                 {

 9                     //在这里判断输入的只能是英文字母和符号'-'

10                     if (!Character.isLetter(source.charAt(i))

11                             && source.charAt(i) != '-') 

12                     {

13                         return "";

14                     }

15                 }

16                 return null;

17             }

18         };

19 

20         etActivteCode.setFilters(new InputFilter[] { filter });

21         etActivteCode.addTextChangedListener(new TextWatcher() {

22 

23             @Override

24             public void onTextChanged(CharSequence s, int start, int before,

25                     int count) {

26                 // TODO Auto-generated method stub

27 

28                 etActivteCode.removeTextChangedListener(this);// 解除文字改变事件

29 

30                 if ((s.length() == 4 || s.length() == 9 || s.length() == 14)) {

31                     etActivteCode.setText(s.toString().toUpperCase() + "-");// 转换

32                 } else {

33                     etActivteCode.setText(s.toString().toUpperCase());// 转换

34                 }

35 

36                 etActivteCode.setSelection(s.toString().length());// 重新设置光标位置

37                 etActivteCode.addTextChangedListener(this);// 重新绑

38                 String licensePlateNumber = etActivteCode.getText().toString()

39                         .trim();

40             }

41 

42             @Override

43             public void beforeTextChanged(CharSequence s, int start, int count,

44                     int after) {

45                 // TODO Auto-generated method stub

46             }

47 

48             @Override

49             public void afterTextChanged(Editable s) {

50                 // TODO Auto-generated method stub

51 

52                 if (s.length() == 19) {

53                     buttonActivate.setVisibility(View.VISIBLE);

54                     InputMethodUtils.HideKeyboard(etActivteCode);

55                 }

56 

57             }

58         });

59         etActivteCode.setOnKeyListener(new OnKeyListener() {

60             @Override

61             public boolean onKey(View v, int keyCode, KeyEvent event) {

62                 // TODO Auto-generated method stub

63                 if (keyCode == KeyEvent.KEYCODE_DEL) {

64                     CommonUtils.LogWuwei(tag, "delete");

65                     etActivteCode.setText("");

66                     buttonActivate.setVisibility(View.INVISIBLE);

67                 }

68                 return false;

69             }

70         });

71     }

 

 

效果如下:

你可能感兴趣的:(EditText)