kunyashaw博客主页 关注kunyashaw新博客 关于kunyashaw 转到底部

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     }

 

 

效果如下:

posted @ 2015-03-18 22:06  kunyashaw  阅读(416)  评论(0编辑  收藏  举报
回到顶部