zoukankan      html  css  js  c++  java
  • 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     }

    效果如下:

  • 相关阅读:
    [AGC020E] Encoding Subsets
    [Topcoder16346]TwoPerLine
    CF913E Logical Expression
    英语面试
    CRM
    WEB使用第三方支付服务大致流程
    OO语言 prototype 初级用法
    flash设置字体
    air 提示问题
    c#里的BYTE
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4348795.html
Copyright © 2011-2022 走看看