zoukankan      html  css  js  c++  java
  • android Edittext自定义输入字符和类型

    android提供了两种方式

    一种是setInputType

    一种是setKeyListener

    直接上代码,有注释

    import android.app.Activity;
    import android.os.Bundle;
    import android.text.InputFilter;
    import android.text.method.NumberKeyListener;
    import android.widget.EditText;
    
    /**
     * @author xirtam
     * @qq 751348449
     */
    public class MainActivity extends Activity {
    
        private EditText et;
    
        public static final int TYPE_1 = -1;// 为了避免和android自带的冲突使用-1
        public static final String TYPE_1_String = "1234567890Xx";// 限制只能输入此字符串中的字符
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            et = (EditText) findViewById(R.id.et);
    
            // et.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL|
            // InputType.TYPE_CLASS_NUMBER);//浮点数
    
            // et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//邮箱
    
            // et.setInputType(InputType.TYPE_CLASS_PHONE);//电话号
    
            // 一下两行就实现了限制输入身份证号
            this.setMaxLength(18);
            et.setKeyListener(new myInputListener(TYPE_1, TYPE_1_String));
        }
    
        /**
         * 自定义输入监听器
         * 
         * @author xirtam
         */
        private class myInputListener extends NumberKeyListener {
    
            private int type;
            private String chars;
    
            public myInputListener(int type, String chars) {
                this.type = type;
                this.chars = chars;
            }
    
            @Override
            public int getInputType() {
                return type;
            }
    
            @Override
            protected char[] getAcceptedChars() {
                return chars.toCharArray();
            }
    
        }
    
        /**
         * 设置可输入最大长度
         * 
         * @param len
         *            长度
         */
        public void setMaxLength(int len) {
            et.setFilters(new InputFilter[] { new InputFilter.LengthFilter(len) });
        }
    
    }

    布局文件里只有一个Edittext ,id为et,就不上传了。

    注意setInputType和setKeyListener可以叠加使用。

  • 相关阅读:
    C/C++ 数据精确度的设置
    Java 接口回调
    ListView + ArrayAdapter + 接口回调
    C/C++内存详解
    第九届蓝桥杯明码
    2018蓝桥杯省赛(C/C++ C组)
    2015蓝桥杯五星填数(C++C组)
    java ee 面试时的机试题
    让div中的table居中
    javascript 调试技巧
  • 原文地址:https://www.cnblogs.com/xirtam/p/3422991.html
Copyright © 2011-2022 走看看