码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-18 23:04:35      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

 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     }

 

 

效果如下:

技术分享

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

标签:

原文地址:http://www.cnblogs.com/kunyashaw/p/4348795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!