• 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     }

    效果如下:

  • 相关阅读:
    duilib框架分析:几个回调(C++11)
    duilib框架分析(一)概述
    图解JVM--(二)垃圾回收
    图解jvm--(一)jvm内存结构
    4 (计算机网络) DHCP与PXE:IP是怎么来的,又是怎么没的?
    3(计算机网络)ifconfig:最熟悉又陌生的命令行
    2 (计算机网络)理解网络协议的工作模式
    1 (计算机网络)我们常用的网络协议有哪些?
    阿里云配置mysql
    深入Spring Boot:那些注入不了的Spring占位符(${}表达式)
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4348795.html
Copyright © 2020-2023  润新知